2016-05-23 46 views
0

這裏是我想要檢索值的xml。使用xpath,當節點包含多個值時如何獲取特定的xml節點值?

<dsml> 
<entries> 
<entry dn="uid=7686,c=in,ou=pages,o=example.com"> 
<att name="uid"> 
<value>7568766</value> 
<value>756876634</value> 
</att><att name="callname"> 
<value>jhsadkjh</value> 
<value>jhsadkjhakjdgakj</value> 
</att></entry> 
</entries> 
</dsml> 

正如您所看到的,每個屬性都有2個值與它關聯。我只想取第一個。 下面是一些XPath的我已經使用:

//dsml/entries/entry/att[@name = 'uid']/value[1] 
//dsml/entries/entry/att[@name = 'uid']/value/[1] 

但它總是拋出異常。

+1

_But它總是拋出exception._ - 添加異常到你的問題將是一個很大的幫助。 –

+1

@Loic M.不要更改用戶提供的代碼或標記,除非您確定自己正確地代表了OP的意圖而不影響手頭的問題;在這種情況下,你不能也不應該做出這樣的改變。回滾。 – kjhughes

+0

@ DanielHaley ..拋出的異常是exceptionjavax.xml.transform.TransformerException:在'/'或'//'標記之後,預期會出現位置步驟。 –

回答

2

此XPath從名爲「ATT」每個標籤只獲取第二個「價值」標籤:

//dsml/entries/entry/att/value[1] 

,或者,如果你只想從「uid」中獲取「值」,你可以使用:

//dsml/entries/entry/att[@name='uid']/value[1] 
+0

對於* // dsml/entries/entry/att [@ name ='uid']/value [1] *,我得到「NullException」 –

+0

我在這裏測試過:http://www.freeformatter.com/xpath -tester.html 它在那裏正常工作。 –

0

attattr是不一樣的元素。另外,</enteries>不能關閉<entries>

下在xsh工作對我來說:

/dsml/entries/entry/att[@name = 'uid']/value[1] 
0

您正在使用不同的名稱相同的元素。作爲開放標籤的entries和作爲結束標籤的enteries。這些名稱應該相同。此外,在XML元素的名稱是att,以及XPath你正在努力尋找attr