En fait, il y a deux façons d'itérer sur tous les éléments :
1. Utilisation de la récursion (la manière la plus courante, je pense) :
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. Éviter la récursion en utilisant getElementsByTagName()
méthode avec *
comme paramètre :
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());
}
}
}
Je pense que ces méthodes sont toutes deux efficaces.
J'espère que cela vous aidera.
0 votes
Invocation récursive de Node.getChildNodes ? download.oracle.com/javase/6/docs/api/org/w3c/dom/
1 votes
Je pense qu'il est intéressant que la question posée aux le plus efficace pour itérer sur tous les éléments d'un fichier
Document
Mais aucune des réponses ne comportait de tests d'efficacité, et la seule mention de l'efficacité était "je pense" ou des suppositions similaires.