基本上,您可以通过两种方式遍历所有元素:
1.使用递归 (我认为是最常见的方式):
public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, TransformerException { documentBuilderFactory docBuilderFactory = documentBuilderFactory .newInstance(); documentBuilder docBuilder = docBuilderFactory.newdocumentBuilder(); document document = docBuilder.parse(new File("document.xml")); doSomething(document.getdocumentElement());}public static void doSomething(Node node) { // do something with the current node instead of System.out System.out.println(node.getNodeName()); NodeList nodeList = node.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { Node currentNode = nodeList.item(i); if (currentNode.getNodeType() == Node.ELEMENT_NODE) { //calls this method for all the children which is Element doSomething(currentNode); } }}2. 使用
getElementsByTagName()带有
*as参数的方法 避免递归 :
public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, TransformerException { documentBuilderFactory docBuilderFactory = documentBuilderFactory .newInstance(); documentBuilder docBuilder = docBuilderFactory.newdocumentBuilder(); document document = docBuilder.parse(new File("document.xml")); NodeList nodeList = document.getElementsByTagName("*"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { // do something with the current element System.out.println(node.getNodeName()); } }}我认为这些方式都很有效。
希望这可以帮助。



