首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOM4J选择下级节点

DOM4J选择下级节点
EN

Stack Overflow用户
提问于 2016-08-11 19:06:37
回答 1查看 5.5K关注 0票数 3

我有了标签书,然后我读出了2个节点

CCUSTBLS_KundennummerBLS

CCOMP_MandantFIBU

在这之后,我有了节点"Lieferadresse“。现在我希望我有一个遍历Node "Lieferadresse“的循环。我的问题是,我总是看到所有的孩子都是"Lieferadresse“,而不仅仅是第一个"Lieferadresse”中的孩子。我想我的Xpath是错的。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<eDoc>
    <book>
        <CCUSTBLS_KundennummerBLS>1143</CCUSTBLS_KundennummerBLS>
        <CCOMP_MandantFIBU>1</CCOMP_MandantFIBU>
        <Lieferadresse>
            <TSHIPBLS_NrLieferadresse>1</TSHIPBLS_NrLieferadresse> 
            <TCUSTBLS_Kunde>1143</TCUSTBLS_Kunde>

        </Lieferadresse>
        <Lieferadresse>
            <TSHIPBLS_NrLieferadresse>2</TSHIPBLS_NrLieferadresse> 
            <TCUSTBLS_Kunde>1143</TCUSTBLS_Kunde>

        </Lieferadresse>
        <Lieferadresse>
            <TSHIPBLS_NrLieferadresse>3</TSHIPBLS_NrLieferadresse> 
            <TCUSTBLS_Kunde>1143</TCUSTBLS_Kunde>

        </Lieferadresse>
    </book>
</eDoc>

Java类

代码语言:javascript
复制
List<Node> nodes = document.selectNodes("/eDoc/book/child::*");
    List<Node> list = nodes;

    for (Node node : list) {
        String nodeName = node.getName();

        if("Lieferadresse".equals(nodeName)){
            List<Node> nodesDelivery = document.selectNodes("//"+nodeName+"/child::*");
            System.out.println("------------------------------------------------------");
            for(Node nodeDelivery : nodesDelivery){
                System.out.println(nodeDelivery.getName() + " " +nodeDelivery.getText());
            }

        }else{
            System.out.println(nodeName + " " +node.getText());
        }

    }

结果:

代码语言:javascript
复制
    Root element :eDoc
CCUSTBLS_KundennummerBLS 1143
CCOMP_MandantFIBU 1
------------------------------------------------------
TSHIPBLS_NrLieferadresse 1
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 2
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 3
TCUSTBLS_Kunde 1143
------------------------------------------------------
------------------------------------------------------
TSHIPBLS_NrLieferadresse 1
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 2
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 3
TCUSTBLS_Kunde 1143
------------------------------------------------------
------------------------------------------------------
TSHIPBLS_NrLieferadresse 1
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 2
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 3
TCUSTBLS_Kunde 1143
------------------------------------------------------
EN

回答 1

Stack Overflow用户

发布于 2016-08-11 19:24:59

使用相对路径*并对node变量调用selectNodes方法,例如node.selectNodes("*") (http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/Node.html#selectNodes(java.lang.String).如果您知道自己对子元素感兴趣,也可以访问node.elements() (如果首先强制转换为http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/Element.html#elements()节点,则为Element。。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38894645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档