2017-06-15 66 views
1

需要快速回答的絕對新手(我今天要研究這個,但現在需要一個答案)。道歉提前爲白癡:XPath查詢 - 節點名稱有多個元素

如下我已經寫了一個XPath:

sum(aaa[status='X' and code='Y']/value) 

這不正是我想要的。然而,一對夫婦的其他節點的內部AAA生活在以下格式:

fff xmlns="urn:xxx.co.uk/soap:xxx" id="xxx" 

ggg type="1" ... title="ASDGHJAS ASHD" 

爲什麼不:

sum(fff/ggg/aaa[status='X' and code='Y']/value)工作?

我該怎麼做才能讓它看看node fff和ggg?我無法輸入完整名稱,因爲每次查詢運行時它們都會有所不同,所以在初始名稱後面會出現所有項目。

謝謝,如果你可以幫助一個沒用的第一個計時器!

<fff xmlns="urn:xxx.co.uk/soap:xxx" id="xxx" linktype="0"> 
<ggg type="1" title="ABC"> 
    <aaa> 
    <status>X</status> 
    <code>Y</code> 
    <value>15</value> 
    </aaa> 
<aaa> 
    <status>Z</status> 
    <code>G</code> 
    <value>5</value> 
</aaa> 
<aaa> 
    <status>X</status> 
    <code>Y</code> 
    <value>30</value> 
</aaa> 
</ggg> 

回答

0

您的XPath不考慮默認命名空間。請參閱How does XPath deal with XML namespaces?併爲默認名稱空間定義一個名稱空間前綴。 在您的具體情況,確定了以下命名空間,

x=urn:xxx.co.uk/soap:xxx 

然後這個XPath,

sum(//x:aaa[x:status='X' and x:code='Y']/x:value) 

將返回

45 

答案如預期

+0

感謝您的幫助而不只是濫用我的基本知識。鏈接的問題是非常有幫助的,但我仍然有點卡住。我現在要承認失敗,直到我的開發者丈夫回家。我試圖自己做 - 儘管你們已經完成了大部分! – Rebecca