首页 > 解决方案 > 为 Java 解析 XML

问题描述

存在这样的 XML 文档:

<root>
    <a/>
    <a/>
    <a/>
    <b>
        <c/>
            <d/>
        <c/>
            <d/>
        <c/>
            <d/>
    </b>
</root>

以下代码用于获取“a”NodeList:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlfile);
doc.getDocumentElement().normalize();
NodeList aNodes = doc.getElementsByTagName("a");

但是如何在 Java 中检索“c”的 NodeList?我试图获取“b”节点的节点,但没有结果,getlength() = 0。

NodeList bNodes = doc.getElementsByTagName("b");
NodeList cNodes = bNodes.item(0).getChildNodes();

标签: javaxmlnodelist

解决方案


doc.getElementsByTagName("c")你可以像这样得到它们。

NodeList cNodes = doc.getElementsByTagName("c");
for (int i = 0; i < cNodes.getLength(); ++i)
    System.out.println(cNodes.item(i));

输出:

[c: null]
[c: null]
[c: null]

我还可以检索“b”的 NodeList。

NodeList bNodes = doc.getElementsByTagName("b");
NodeList bChildren = bNodes.item(0).getChildNodes();
for (int i = 0; i < bChildren.getLength(); ++i)
    System.out.println(bChildren.item(i));

输出:

[#text: 
        ]
[c: null]
[#text: 
            ]
[d: null]
[#text: 
        ]
[c: null]
[#text: 
            ]
[d: null]
[#text: 
        ]
[c: null]
[#text: 
            ]
[d: null]
[#text: 
    ]

推荐阅读