XPath查询 - 节点名称有多个元素

时间:2017-06-15 11:08:54

标签: xml 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)工作?

我要告诉它看看节点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> 

1 个答案:

答案 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

按预期