簡體   English   中英

Java從xml遞歸讀取節點僅返回#text節點

[英]Java reading nodes recursively from xml returns just #text nodes

我正在使用此方法從xml文件讀取所有節點。 但是似乎我的遞歸不起作用,因為所有節點都是#text節點。 我如何跳過它並使它返回我的實際節點?

private void iterateNodes(Node node) {

    System.out.println("Node: " + node.getNodeName());

    NodeList nodeList = node.getChildNodes();

    for (int i = 0; i < nodeList.getLength(); i++) {
        Node currentode = nodeList.item(0);

        System.out.println(currentode.getNodeName());

        if (currentode.getNodeType() == Node.ELEMENT_NODE) {

            Element element = (Element) currentode;
            iterateNodes(element);
        }
    }
}

public void run() throws ParserConfigurationException, SAXException, IOException {

    String path = "others.xml";

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    DocumentBuilder builder = factory.newDocumentBuilder();
    org.w3c.dom.Document document = builder.parse(path);

    document.getDocumentElement().normalize();

    iterateNodes(document.getDocumentElement());

}

您在Node currentode = nodeList.item(0)編寫代碼<----用迭代器變量i進行更改。

private void iterateNodes(Node node) {

    System.out.println("Node: " + node.getNodeName());
    NodeList nodeList = node.getChildNodes();

    for (int i = 0; i < nodeList.getLength(); i++) {
        Node currentode = nodeList.item(i);

        System.out.println(currentode.getNodeName());

        if (currentode.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) currentode;
            iterateNodes(element);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM