Java - 用于子节点的dom4j XPath

时间:2012-10-17 14:25:37

标签: java xml xml-parsing sax dom4j

我正在使用[dom4j] 1[XPath] 2来遍历XML。

假设我手头有Node个子节点,每个子节点都有相同的标签名称。例如(请参阅b节点):

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

我尝试使用selectNodes("//b"),但它会返回文档中的所有节点,其开放标记为b

如何仅遍历特定节点的子节点,其中所有子节点具有相同的标记名称(例如b)。

3 个答案:

答案 0 :(得分:6)

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

.是XPath中的当前节点。

请注意,///descendant-or-self::node()/的缩写。这意味着它还将选择嵌套节点。

你说的是孩子,这不是一回事。对于子节点,请使用:

selectNodes("./b") 

答案 1 :(得分:1)

尝试selectNodes("a//b")如果您想要所有<b>元素,无论他们是孩子还是孩子。如果您只想<b> <a>selectNodes("a/b")个子元素使用<a>

如果你知道节点selectNodes("/a//b")将是根节点的子节点,你可以在前面添加一个/来表示你只选择根节点的子节点,如下所示:{{1 }}

有关详细信息,请参阅xpath syntax

答案 2 :(得分:0)

你可以像这样使用

//a/b

a可以是您的特定节点。