2014-03-24 65 views
1

我在尋找與xapth表達式通過在兩個級別分別是:孩子的節點和「細節孫子節點」:搜索獨生子女和細節孫子

例如:

<nodeLevel_1> 

    <nodeLevel_1.1 value="a" /> 

    <nodeLevel_1.2 value="b" /> 

    <nodeLevel_1.3> 
    <nodeLevel_1.3.1 value="c" /> 
    </nodeLevel_1.3> 

</nodeLevel_1> 

<nodeLevel_2> 
    .... 

這裏我試着去達到一個屬性: nodeLevel_1.1/@valuenodeLevel_1.3.1/@value

,但沒有通過任何nodeLevel_1.2/@value通。

我試圖使用:descendant::nodeLevel1/@value 但與此xpath我得到@value屬性nodeLevel_1.2,我不想這樣。

有沒有辦法用xpath管理這種情況?謝謝。

回答

0

您可以檢查標籤名稱不等於nodeLevel_1.2

使用xmllint測試:

$ cat input.xml 
<nodeLevel_1> 
    <nodeLevel_1.1 value="a" /> 
    <nodeLevel_1.2 value="b" /> 
    <nodeLevel_1.3> 
    <nodeLevel_1.3.1 value="c" /> 
    </nodeLevel_1.3> 
</nodeLevel_1> 

$ xmllint input.xml --xpath "//descendant::nodeLevel_1/*[not(self::nodeLevel_1.2)]/@value" 
value="a" 
+0

謝謝您的回答。 – AlexDG