2014-02-18 115 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)

相關問題