Java - 使用dom4j XPath查找子节点

3
我正在使用[dom4j]1[XPath]2来遍历XML。假设我手头有一个Node,它有子节点,每个子节点都有相同的标签名。(参考b节点):
<a>
    <b>...</b>
    <b>...</b>
</a>

我尝试使用selectNodes("//b"),但它返回的是文档中所有开标签为b的节点。

我应该如何遍历一个特定节点的子节点,其中所有子节点都具有相同的标签名称(例如b)。

3个回答

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

.是XPath中的当前节点。

注意,//代表/descendant-or-self::node()/的缩写。这意味着它也会选择嵌套的节点。

你提到了孩子们,但这不是同一件事情。要使用子节点,请使用:

selectNodes("./b") 

1

如果您想要选择所有的<b>元素,无论它们是子元素还是子元素的子元素,请尝试使用selectNodes("a//b")。如果您只想选择作为<a>子元素的<b>元素,请使用selectNodes("a/b")

如果您知道节点<a>将是根节点的子节点,则可以在前面添加/来表示您仅选择根节点的子节点,如下所示:selectNodes("/a//b")

有关更多信息,请参见xpath语法


0

你可以像这样使用

//a/b

a可以是您特定的节点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接