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"
) 如果您想要所有<b>
元素,无论它们是子元素还是子元素的子元素。如果您只想要作为<a>
子级的<b>
元素,请使用selectNodes("a/b")
。
如果您知道节点 <a>
将是根节点的子节点,您可以在前面添加 / 表示您只选择根节点的子节点,如下所示:selectNodes("/a//b")
查看xpath syntax了解更多信息
【讨论】:
【参考方案3】:你可以这样使用
//a/b
a
可以是您的特定节点。
【讨论】:
以上是关于Java - 子节点的 dom4j XPath的主要内容,如果未能解决你的问题,请参考以下文章