【问题标题】:How to get nodes of only current element in dom4j?如何在dom4j中仅获取当前元素的节点?
【发布时间】:2015-04-13 13:52:32
【问题描述】:

请帮我解决 dom4j 中的以下问题

这是我的 xml 文件:

<root>
    <variant>
        <name>first</name>
        <values>
            <name>first_element</name>
        </values>
    </variant>
    <variant>
        <name>second</name>
        <values>
            <name>second_element</name>
        </values>
    </variant>
</root>

我使用以下 java 代码来获取变体节点。

root.selectNodes("\root\variant");

这使我的列表计数为 2。我正在使用列表单独收集每个节点。从我正在迭代的列表节点。我曾经按照代码来获取值“values\name”。

variant.selectNodes("\\values\name");

我得到了两个值“first_element 和 second_element”。谁能帮我获取当前节点的一个值。

【问题讨论】:

    标签: java xml dom4j


    【解决方案1】:

    你应该像这样从当前节点中选择名称:

        List list = document.selectNodes( "//a/@href" );
    
        for (Iterator iter = list.iterator(); iter.hasNext(); ) {
            Attribute attribute = (Attribute) iter.next();
            String url = attribute.getValue();
        }
    

    http://dom4j.sourceforge.net/dom4j-1.6.1/guide.html

    【讨论】:

      【解决方案2】:

      既然它使用 XPath,你为什么不试试类似的东西:

      root.selectNodes("\root\variant[1]\values\name");
      

      这意味着:获取根目录中的第一个变体并搜索“\values\name”。

      您也可以尝试删除双斜线。双斜杠表示任何具有祖先的案例,因此可能会造成混淆。您可以使用点来选择当前节点:

      variant.selectNodes("./values\name");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-14
        • 2016-11-18
        • 2011-10-24
        • 2012-06-20
        • 2016-09-20
        • 1970-01-01
        • 2018-06-21
        • 1970-01-01
        相关资源
        最近更新 更多