Prima devi capire cosa contiene l'albero dei nodi:Originariamente inviato da koala81
A me interessava sapere anche un parere sull'uso dei due metodi parse().
Cioè, come potevo usarli per scorrere tutto l'albero.
Pensavo a qualcosa di ricorsivo, ma non capisco come posso usare tutti e due i metodi...
Dato un documento di questo tipo:codice:import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; public class BasicJaxpDom2 { public static void main (String[] args) { try { File f = new File ("documento.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance (); DocumentBuilder builder = factory.newDocumentBuilder (); Document document = builder.parse (f); Element root = document.getDocumentElement (); elabora (root, 0); } catch (Exception e) { System.out.println (e); } } public static void elabora (Node node, int livello) { indentazione (livello); System.out.println ("Nome = " + node.getNodeName ()); short type = node.getNodeType (); indentazione (livello); System.out.print ("Tipo = " + type); switch (type) { case Node.ELEMENT_NODE: System.out.println (" ELEMENT"); break; case Node.TEXT_NODE: System.out.println (" TEXT: \"" + node.getNodeValue() + "\""); break; // ... esistono molti altri tipi .... default: System.out.println (); break; } System.out.println (); NodeList nodeList = node.getChildNodes (); for (int i = 0; i < nodeList.getLength(); i++) elabora (nodeList.item (i), livello+1); // chiamata ricorsiva! } public static void indentazione (int livello) { for (int i = 0; i < livello; i++) System.out.print (" "); } }
L'output del programma è:codice:<?xml version="1.0"?> <prova> <esempio> <messaggio>ciao</messaggio> </esempio> </prova>
codice:Nome = prova Tipo = 1 ELEMENT Nome = #text Tipo = 3 TEXT: " " Nome = esempio Tipo = 1 ELEMENT Nome = #text Tipo = 3 TEXT: " " Nome = messaggio Tipo = 1 ELEMENT Nome = #text Tipo = 3 TEXT: "ciao" Nome = #text Tipo = 3 TEXT: " " Nome = #text Tipo = 3 TEXT: " "

Rispondi quotando