获取XML Java节点的所有子节点

获取XML Java节点的所有子节点,java,xml,Java,Xml,我正在读取一个XML文件并显示该文件的输出 但问题是,当一个节点有多个子节点时,会发生以下情况: ---------character ---------id ------------>148 ---------name ------------>Arya Stark ---------gender ------------>Female ---------culture ------------>Northmen ---------born ------------&g

我正在读取一个XML文件并显示该文件的输出

但问题是,当一个节点有多个子节点时,会发生以下情况:

---------character
---------id
------------>148
---------name
------------>Arya Stark
---------gender
------------>Female
---------culture
------------>Northmen
---------born
------------>In 289 AC, at Winterfell
---------died
---------alive
------------>TRUE
---------titles
---------title
------------>Princess
---------aliases
---------alias
------------>Arya Horseface
---------alias
------------>Arya Underfoot
---------alias
------------>Arry
---------alias
------------>Lumpyface
---------alias
------------>Lumpyhead
---------alias
------------>Stickboy
---------alias
------------>Weasel
---------alias
------------>Nymeria
---------alias
------------>Squan
---------alias
------------>Saltb
---------alias
------------>Cat of the Canaly
---------alias
------------>Bets
---------alias
------------>The Blind Girh
---------alias
------------>The Ugly Little Girl
---------alias
------------>Mercedenl
---------alias
------------>Mercye
如您所见,别名有很多别名,我希望同时输出它们

这是我的代码:

public class JavaApplication20 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws ParserConfigurationException, org.xml.sax.SAXException, IOException {

        String path = "got.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());

    }

    private static void iterateNodes(Node node) {

        NodeList nodeList = node.getChildNodes();

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

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

                System.out.print("---------");
                System.out.println(currentode.getNodeName().trim());

                Element element = (Element) currentode;
                iterateNodes(element);
            } else if (!nodeList.item(i).getTextContent().trim().equals("")) {
                System.out.println("------------>" + nodeList.item(i).getTextContent().trim());

            }

        }

    }

}
公共类JavaApplication20{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args)抛出ParserConfiguration异常、org.xml.sax.SAXException、IOException{
String path=“get.xml”;
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder=factory.newDocumentBuilder();
org.w3c.dom.Document Document=builder.parse(路径);
document.getDocumentElement().normalize();
iterateNodes(document.getDocumentElement());
}
私有静态void iterateNodes(节点){
NodeList NodeList=node.getChildNodes();
for(int i=0;i”+nodeList.item(i).getTextContent().trim());
}
}
}
}

我试图检测一个节点何时有多个子节点,但我不知道


提前谢谢

我已经解决了,这是一个糟糕的解决方案,但解决了问题

我创建了一个存储节点名的字符串,如果下一个节点的名称与字符串var相同,id不会打印名称

   if(!anterior.equals(currentode.getNodeName().trim())){
         System.out.print("---------");
            System.out.println(currentode.getNodeName().trim());
     } 
            
            
            anterior=currentode.getNodeName().trim();

检测节点是否有多个子节点-->nodeList.getLength()>1?如果节点有多个子节点,我想打印节点的所有子节点