Volendo eseguire il seguente codice:
codice:import java.io.*; /* IMPORTIAMO I PACKAGE NECESSARI PER LAVORATE CON GLI XML /**/ import org.jdom.*; import org.jdom.output.XMLOutputter; import org.jdom.input.SAXBuilder; public class ModificaXML { String nomefile; public ModificaXML(String nomeFile) { this.nomefile = nomeFile; } public void modifica() { File f = new File(nomefile); /* ISTANZIAMO UN OGGETTO SAXBuilder CHE CI PERMETTE DI PARSARE UN XML /**/ SAXBuilder saxbuilder = new SAXBuilder ( "org.apache.xerces.parsers.SAXParser",false ); /* ISTANZIAMO UN OGGETTO Document /**/ Document documento = null; try { /* COSTRUIAMO UN Document DA UN XML /**/ documento = saxbuilder.build(f); }catch (JDOMException e) { System.err.println ("errore: "+e); } if(documento != null) { /* ISTANZIAMO UN OGGETTO Element PRENDENDO IL RIFERIMENTO AD UN SUPERTAG GIA' ESISTENTE /**/ Element root = documento.getRootElement(); /* ISTANZIAMO ALTRI OGGETTI Element PASSANDOGLI LE STRINGHE CHE SARANNO I NOMI DEI NOSTRI TAG /**/ Element newinitparam = new Element("new-init-param"); Element paramname = new Element("param-name"); Element paramvalue = new Element("param-value"); /* ASSEGNAMO DEI VALORI DI TIPO "CDATA" AI TAG param-name E param-value: <param-name>nuovo nome</param-name> /**/ paramname.addContent(new CDATA(" nuovo nome")); paramvalue.addContent(new CDATA(" nuovo valore")); /* AGGIUNGIAMO I TAG param-name E Param-value AL TAG new-init-param /**/ newinitparam.addContent(paramname); newinitparam.addContent(paramvalue); /* AGGIUNGIAMO IL TAG new-init-param AL SUPERTAG root /**/ root.addContent(newinitparam); } BufferedWriter out = null; try { /* ISTANZIAMO LA CLASSE XMLOutputter CHE CI PERMETTE DI FORMATTARE IL FILE XML. /**/ XMLOutputter xout = new XMLOutputter(); xout.setIndent(true); xout.setNewlines(true); /* CON QUESTA ISTRUZIONE SCRIVIAMO IL DOCUMENTO documento IN UN BufferedWriter CHE CREA IL FILE TRAMITE UN FileWriter /**/ xout.output(documento,out); }catch(IOException e) { System.out.println("Error in producing file: " + e.getMessage()); }finally { try { out.close(); }catch(IOException e) { System.out.println("Error in closing file: " + e.getMessage()); } } } public static void main (String[] args) { ModificaXML modifica = new ModificaXML (args[0]); modifica.modifica(); } }
Ricevo come eccezione:
Exception in thread "main" java.lang.NullPointerException
at ModificaXML.modifica(ModificaXML.java:117)
at ModificaXML.main(ModificaXML.java:128)
Come mai?