范例XML:
<root>
<ns1:agent ns2:about="a3">
<ns2:name xml:lang="en">Helen</ns2:name>
<ns2:age>26</ns2:age>
</ns1:agent>
<ns1:agent ns2:about="a1">
<ns2:name xml:lang="en">John</ns2:name>
<ns2:age>26</ns2:age>
</ns1:agent>
<ns1:agent ns2:about="a2">
<ns2:name xml:lang="en">Mike</ns2:name>
<ns2:age>30</ns2:age>
</ns1:agent>
...
<!-- More ns1:agent nodes -->
...
<ns3:person ns2:id="a1"/>
<ns3:person ns2:id="a2"/>
<ns3:person ns2:id="a3"/>
...
<!-- More ns3:person nodes -->
...
</root>
那么,如何使用XPath从基于person元素的about属性获取agent / name元素的文本值呢?
编辑:对于每个ns3:person节点,XPath表达式将在循环中使用,因此我事先不知道特定的id属性值。
如果我正确理解了您的问题,则您正在寻找这样的xpath表达式:
//ns1:agent[@ns2:about=//ns3:person/@ns2:id]/ns2:name
为了对其进行测试,我将更改ns3:persons
示例XML中的节点
<ns3:person ns2:id="a1"/>
<ns3:person ns2:id="a2"/>
<ns3:person ns2:id="a3"/>
至
<ns3:person ns2:id="a7"/>
<ns3:person ns2:id="a2"/>
<ns3:person ns2:id="a9"/>
因此只有一个随机ns1:agent
对应一个随机ns3:person
。如果这样做,则该xpath表达式将选择Mike
作为目标名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句