如何在XPATH中使用local-name()获得第一个元素?
问题描述:
<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
答
//*[local-name()='PID'][1]
应该返回全部1st孩子PID的元素,这是2在您的示例文档中。
如果你只想要2号一个,你可以使用括号:
(//*[local-name()='PID'])[2]
(记住XPath的位置从1开始,而不是0)
'// * [本地名称()=” PID'] [1]'应该返回样本文档中所有第一个孩子的PID元素,它们是2。如果你只想要第二个,你可以使用括号:'(// * [local-name()='PID'])[2]'(记得XPath位置从1开始,而不是0) –
谢谢你的工作 –
这个特殊的皱纹在[XPath spec](http://www.w3.org/TR/xpath/#path-abbrev)中有详细说明:“注意:位置路径// para [1]'不意思是与位置路径'/ descendant :: para [1]'相同,后者选择第一个后裔para元素;前者选择所有后代para元素,这是他们父母的第一个para孩子。 –