我正在使用[dom4j]
1和[XPath]
2以遍历XML。Java - dom4j XPath用于儿童节点
假设我手上有一个Node
,它有子节点,每个节点都有相同的标签名称。例如(参见b
节点):
<a>
<b>...</b>
<b>...</b>
</a>
我试图用selectNodes("//b")
但它返回的文件,他们的开放标签b
内的所有节点。
如何遍历特定节点的子节点,其中所有子节点具有相同的标记名称(例如b
)。
我正在使用[dom4j]
1和[XPath]
2以遍历XML。Java - dom4j XPath用于儿童节点
假设我手上有一个Node
,它有子节点,每个节点都有相同的标签名称。例如(参见b
节点):
<a>
<b>...</b>
<b>...</b>
</a>
我试图用selectNodes("//b")
但它返回的文件,他们的开放标签b
内的所有节点。
如何遍历特定节点的子节点,其中所有子节点具有相同的标记名称(例如b
)。
selectNodes(".//b")
//-----------^
.
是XPath中的当前节点。
请注意,//
是/descendant-or-self::node()/
的简称。这意味着它也将选择嵌套节点。
你说的是孩子,这不是一回事。子节点的使用方法:
selectNodes("./b")
,你可以使用这样
//a/b
和a
可以成为你的特定节点。
尝试selectNodes("a//b"
)如果你想要所有的<b>
元素,无论他们是孩子还是孩子。如果您只想要使用<b>
子元素<a>
,请使用selectNodes("a/b")
。
如果您知道该节点<a>
将是根节点的孩子,你可以在前面加一个/来表示你只选择根节点的孩子,像这样:selectNodes("https://stackoverflow.com/a//b")
见xpath syntax欲了解更多信息