我写了一个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)
工作?
我要告诉它看看节点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 :(得分: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
按预期