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

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

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

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

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

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

【问题讨论】:

    标签: java xml xml-parsing sax dom4j


    【解决方案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 可以是您的特定节点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-24
          • 1970-01-01
          • 2021-06-09
          • 2013-02-06
          相关资源
          最近更新 更多