XML Datei erweitern, Nullpointer Exeption

Zack

cookies vader
Hallo,

ich möchte eine bestehende XML Datei erweitern. Dazu habe ich mir folgende Klasse definiert:
Java:
package dvdmanager;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class XMLHandler {
	private String path = "";
	public XMLHandler(String path){
		this.path = path;
	}
    public void writeXML(String[] data){
		try{
			DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
			Document doc;
			doc = docBuilder.parse(this.path);
			 
			//Get the root element
			Node dvd = doc.getFirstChild(); 
			NodeList item = doc.getElementsByTagName("item");
			int newId = new Integer((item.item(item.getLength()-1).getChildNodes().item(0).getTextContent()))+1;

			Element insert = doc.createElement("item");
			//id
			Element id = doc.createElement("id");
			id.appendChild(doc.createTextNode(Integer.toString(newId)));
			insert.appendChild(id);
			//tile
			Element title = doc.createElement("title");
			title.appendChild(doc.createTextNode(data[0]));
			insert.appendChild(title);
			//laenge
			Element laenge = doc.createElement("laenge");
			laenge.appendChild(doc.createTextNode(data[1]));
			insert.appendChild(laenge);
			//erschienen
			Element erschienen = doc.createElement("erschienen");
			erschienen.appendChild(doc.createTextNode(data[2]));
			insert.appendChild(erschienen);
			dvd.appendChild(insert);
			
			//write the content into xml file
			TransformerFactory transformerFactory = TransformerFactory.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			DOMSource source = new DOMSource(doc);
			StreamResult result =  new StreamResult(new File(this.path));
			transformer.transform(source, result);
			 
		}catch(ParserConfigurationException pce){
			pce.printStackTrace();
		}catch(TransformerException tfe){
			tfe.printStackTrace();
		}catch (SAXException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
    }
}
Allerdings fliegt eine Nullpointer Exeption:
Code:
javax.xml.transform.TransformerException: java.lang.NullPointerException
	at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
	at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
	at dvdmanager.XMLHandler.writeXML(XMLHandler.java:62){

die Frage ist: Warum?

LG Zack
 
Hast du mal die beiden Parameter, die du der Methode transform (bei dir Zeile 62, im hier kopierten Code-Block scheinbar Zeile 65) übergibst, überprüft?
genau genommen geht es um diese beiden Variablen, von denen eine nicht korrekt initialisiert wird:
Java:
            DOMSource source = new DOMSource(doc);
            StreamResult result =  new StreamResult(new File(this.path));
 
Hallo, danke erstmal :).

Kumpel hat mir gerade die Debug-Ansicht sowie Breakpoints von Eclipse nahe gelegt.

Dabei fällt mir auf das source null ist. Was aber durch doc ensteht. Es muss quasi der Fehler weiter oben liegen. Irgendwie mach ich was beim Erweitern falsch...

So sieht meine XML aus die ich erweitern will.
XML:
<?xml version="1.0" encoding="UTF-8"?>
<dvd>
	<item>
		<id>1</id>
		<title>A-Team</title>
		<laenge>120 Minuten</laenge>
		<erschienen>2010</erschienen>
	</item>
	<item>
		<id>2</id>
		<title>Fast Furious Five</title>
		<laenge>122 Minuten</laenge>
		<erschienen>2010</erschienen>
	</item>
	<item>
		<id>3</id>
		<title>Pries</title>
		<laenge>87 Minuten</laenge>
		<erschienen>2011</erschienen>
	</item>
	<item>
		<id>4</id>
		<title>Thor</title>
		<laenge>115 Minuten</laenge>
		<erschienen>2011</erschienen>
	</item>
	<item>
		<id>5</id>
		<title>Source Code</title>
		<laenge>93 Minuten</laenge>
		<erschienen>2011</erschienen>
	</item>
	<item>
		<id>6</id>
		<title>Men in Black</title>
		<laenge>108 Minuten</laenge>
		<erschienen>2010</erschienen>
	</item>
</dvd>
 
Zuletzt bearbeitet von einem Moderator:
Ok hat sich erledigt. Der Fehler lag dummerweise im Aufruf. das übergebene Array war einfach leer.... NC

Danke an alle :)
 
Zurück