2012-10-17 85 views
3

我正在使用[dom4j]1[XPath]2以遍歷XML。Java - dom4j XPath用於兒童節點

假設我手上有一個Node,它有子節點,每個節點都有相同的標籤名稱。例如(參見b節點):

<a> 
    <b>...</b> 
    <b>...</b> 
</a> 

我試圖用selectNodes("//b")但它返回的文件,他們的開放標籤b內的所有節點。

如何遍歷特定節點的子節點,其中所有子節點具有相同的標記名稱(例如b)。

回答

6
selectNodes(".//b") 
//-----------^ 

.是XPath中的當前節點。

請注意,///descendant-or-self::node()/的簡稱。這意味着它也將選擇嵌套節點。

你說的是孩子,這不是一回事。子節點的使用方法:

selectNodes("./b") 
0

,你可以使用這樣

//a/b 

a可以成爲你的特定節點。

1

嘗試selectNodes("a//b")如果你想要所有的<b>元素,無論他們是孩子還是孩子。如果您只想要使用<b>子元素<a>,請使用selectNodes("a/b")

如果您知道該節點<a>將是根節點的孩子,你可以在前面加一個/來表示你只選擇根節點的孩子,像這樣:selectNodes("https://stackoverflow.com/a//b")

xpath syntax欲瞭解更多信息