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?