Salve, questo è il mio codice DOM per attraversare un albero di un documento e stampare degli elementi con relativi attributi:
codice:
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import java.io.*;
public class AnalisiDOM {
private Document d;
private Element r;
public AnalisiDOM(String file) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder domParser = dbf.newDocumentBuilder();
d = domParser.parse(new File(file));
r = d.getDocumentElement();
esaminaNodo(r);
}
catch(SAXParseException e) {
System.out.println("Errore di parsing: "+ e.getMessage());
System.exit(1);
}
catch(FileNotFoundException e) {
System.out.println("File "+ file + " non trovato");
System.exit(1);
}
catch(Exception e) {
e.printStackTrace();
}
}// AnalisiDOM
public void esaminaNodo(Node nodo) {
switch(nodo.getNodeType()) {
case Node.ELEMENT_NODE:
System.out.println("Elemento: " + nodo.getNodeName());
NamedNodeMap attributi = nodo.getAttributes();
if(attributi.getLength() > 0) {
System.out.println("\tAttributi: ");
for(int i=0; i Attr attributo = (Attr) attributi.item(i); System.out.print(attributo.getNodeName() + "=" + attributo.getNodeValue() + " ");
}
System.out.println();
}
esaminaFigli(nodo.getChildNodes());
System.out.println("Fine elemento: " + nodo.getNodeName());
break;
case Node.CDATA_SECTION_NODE:
case Node.TEXT_NODE:
Text testo = (Text)nodo;
if(!testo.getNodeValue().trim().equals(""))
System.out.println("\tTesto; " + testo.getNodeValue());
break;
}
}// esaminaNodo
public void esaminaFigli(NodeList figli) {
if(figli.getLength() > 0)
for(int i=0; i esaminaNodo(figli.item(i));
}// esaminaFigli
}
Il compilatore mi segnala degli errori in ROSSO , come correggerli?
for solitamente dovrebbe essere for( ; ; );
GRAZIE in anticipo per le risposte...