我正在使用[dom4j]
1和[XPath]
2来遍历XML。
假设我手头有Node
个子节点,每个子节点都有相同的标签名称。例如(请参阅b
节点):
<a>
<b>...</b>
<b>...</b>
</a>
我尝试使用selectNodes("//b")
,但它会返回文档中的所有节点,其开放标记为b
。
如何仅遍历特定节点的子节点,其中所有子节点具有相同的标记名称(例如b
)。
答案 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
可以是您的特定节点。