Java - 子节点的 dom4j XPath

Posted

技术标签:

【中文标题】Java - 子节点的 dom4j XPath【英文标题】:Java - dom4j XPath for children nodes 【发布时间】:2012-10-07 20:14:29 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:
selectNodes(".//b") 
//-----------^

. 是 XPath 中的当前节点。

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

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

selectNodes("./b") 

【讨论】:

【参考方案2】:

尝试selectNodes("a//b") 如果您想要所有&lt;b&gt; 元素,无论它们是子元素还是子元素的子元素。如果您只想要作为&lt;a&gt; 子级的&lt;b&gt; 元素,请使用selectNodes("a/b")

如果您知道节点 &lt;a&gt; 将是根节点的子节点,您可以在前面添加 / 表示您只选择根节点的子节点,如下所示:selectNodes("/a//b")

查看xpath syntax了解更多信息

【讨论】:

【参考方案3】:

你可以这样使用

//a/b

a 可以是您的特定节点。

【讨论】:

以上是关于Java - 子节点的 dom4j XPath的主要内容,如果未能解决你的问题,请参考以下文章

Dom4j 操作, 节点查找 添加 删除 修改 。。。xPath

使用XPath技术快速获取节点

dom4j支持Xpath的具体操作

学习笔记关于DOM4J:使用DOM4J解析XML文档

Java操作XML文件

爪哇国新游记之三十四----Dom4j的XPath操作