2012-10-17 82 views
3

我正在使用[dom4j]1[XPath]2以遍历XML。Java - dom4j XPath用于儿童节点

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

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

我试图用selectNodes("//b")但它返回的文件,他们的开放标签b内的所有节点。

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

回答

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

.是XPath中的当前节点。

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

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

selectNodes("./b") 
0

,你可以使用这样

//a/b 

a可以成为你的特定节点。

1

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

如果您知道该节点<a>将是根节点的孩子,你可以在前面加一个/来表示你只选择根节点的孩子,像这样:selectNodes("https://stackoverflow.com/a//b")

xpath syntax欲了解更多信息