2017-06-15 45 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