2014-02-18 82 views
0
<xyy:UP xmlns:xyy="urn:com" xmlns:xyx="urn:com" xmlns:xzx="urn:com"> 
<xyx:ITM> 
<xzx:PID>ABCDEFGH</xzx:PID> 
</xyx:ITM> 
<xyx:ITM> 
<xzx:PID>IJKLMNOP</xzx:PID> 
</xyx:ITM> 
</xyy:UP> 

我试着按照xpath得到第二个'PID'标签,它有文本节点IJKLMNOP,但它不会返回任何。如何在XPATH中使用local-name()获得第一个元素?

//*[local-name()='PID'][1] 

但它会列出所有的PID,如果我用跟随

//*[local-name()='PID'] 

任何机构可以拉我出这个PLZ

+2

'// * [本地名称()=” PID'] [1]'应该返回样本文档中所有第一个孩子的PID元素,它们是2。如果你只想要第二个,你可以使用括号:'(// * [local-name()='PID'])[2]'(记得XPath位置从1开始,而不是0) –

+0

谢谢你的工作 –

+1

这个特殊的皱纹在[XPath spec](http://www.w3.org/TR/xpath/#path-abbrev)中有详细说明:“注意:位置路径// para [1]'不意思是与位置路径'/ descendant :: para [1]'相同,后者选择第一个后裔para元素;前者选择所有后代para元素,这是他们父母的第一个para孩子。 –

回答

3

//*[local-name()='PID'][1]应该返回全部1st孩子PID的元素,这是2在您的示例文档中。

如果你只想要2号一个,你可以使用括号:

(//*[local-name()='PID'])[2] 

(记住XPath的位置从1开始,而不是0)

相关问题