我正在使用[dom4j]
1和[XPath]
2以遍歷XML。Java - dom4j XPath用於兒童節點
假設我手上有一個Node
,它有子節點,每個節點都有相同的標籤名稱。例如(參見b
節點):
<a>
<b>...</b>
<b>...</b>
</a>
我試圖用selectNodes("//b")
但它返回的文件,他們的開放標籤b
內的所有節點。
如何遍歷特定節點的子節點,其中所有子節點具有相同的標記名稱(例如b
)。
我正在使用[dom4j]
1和[XPath]
2以遍歷XML。Java - dom4j XPath用於兒童節點
假設我手上有一個Node
,它有子節點,每個節點都有相同的標籤名稱。例如(參見b
節點):
<a>
<b>...</b>
<b>...</b>
</a>
我試圖用selectNodes("//b")
但它返回的文件,他們的開放標籤b
內的所有節點。
如何遍歷特定節點的子節點,其中所有子節點具有相同的標記名稱(例如b
)。
selectNodes(".//b")
//-----------^
.
是XPath中的當前節點。
請注意,//
是/descendant-or-self::node()/
的簡稱。這意味着它也將選擇嵌套節點。
你說的是孩子,這不是一回事。子節點的使用方法:
selectNodes("./b")
,你可以使用這樣
//a/b
和a
可以成爲你的特定節點。
嘗試selectNodes("a//b"
)如果你想要所有的<b>
元素,無論他們是孩子還是孩子。如果您只想要使用<b>
子元素<a>
,請使用selectNodes("a/b")
。
如果您知道該節點<a>
將是根節點的孩子,你可以在前面加一個/來表示你只選擇根節點的孩子,像這樣:selectNodes("https://stackoverflow.com/a//b")
見xpath syntax欲瞭解更多信息