Hallo Leute,
ich habe ein ganz komisches Problem: ich möchte eine XML-Datei einlesen und diese in ein JTable schreiben. Bevor das Programm beendet wird, soll die Datei wieder neu geschrieben werden. Soweit so gut. Es klappt eingentlich alles. Er ließt das XML ein, schreibt es in mein JTable und er schreibt es auch wieder neu, aber jetzt kommts. Starte ich das Programm nochmal, gibts ein NullPointer. Heißt er kann dann die Datei nicht mehr richtig einlesen ABER sie ist weiterhin vorhanden, und zwar genauso wie sie ursprünglich war. Das einzigste was mir aufgefallen ist, ist das die XML-Datei nach dem neuschreiben ca. 28 Bytes kleiner ist als vorher! Wie kann das sein das 2 gleiche XML-Dokumente unterschiedlich groß sind? Aber es sind weiterhin alle Einträge vorhanden. Hier mal der Code zum laden und einlesen der Liste:
Schreiben:
Lesen:
Um Hilfe und Ratschläge wäre ich sehr dankbar
Viele Grüße
reakky
ich habe ein ganz komisches Problem: ich möchte eine XML-Datei einlesen und diese in ein JTable schreiben. Bevor das Programm beendet wird, soll die Datei wieder neu geschrieben werden. Soweit so gut. Es klappt eingentlich alles. Er ließt das XML ein, schreibt es in mein JTable und er schreibt es auch wieder neu, aber jetzt kommts. Starte ich das Programm nochmal, gibts ein NullPointer. Heißt er kann dann die Datei nicht mehr richtig einlesen ABER sie ist weiterhin vorhanden, und zwar genauso wie sie ursprünglich war. Das einzigste was mir aufgefallen ist, ist das die XML-Datei nach dem neuschreiben ca. 28 Bytes kleiner ist als vorher! Wie kann das sein das 2 gleiche XML-Dokumente unterschiedlich groß sind? Aber es sind weiterhin alle Einträge vorhanden. Hier mal der Code zum laden und einlesen der Liste:
Schreiben:
Java:
void writeInXml() throws ParserConfigurationException, SAXException, IOException, TransformerException{
dBF = DocumentBuilderFactory.newInstance();
dB = dBF.newDocumentBuilder();
doc = dB.newDocument();
Element getRootW = doc.createElement("interpreten");
doc.appendChild(getRootW);
Node getRoot = doc.getFirstChild();
for(int i = 0; i < table.getRowCount(); i++){
Element album = doc.createElement("album");
getRoot.appendChild(album);
Element title = doc.createElement("title");
album.appendChild(title);
title.appendChild(doc.createTextNode((String) table.getValueAt(i, 2)));
Element artist = doc.createElement("artist");
album.appendChild(artist);
artist.appendChild(doc.createTextNode((String) table.getValueAt(i, 1)));
Element track = doc.createElement("track");
album.appendChild(track);
track.appendChild(doc.createTextNode((String) table.getValueAt(i, 0)));
Element path = doc.createElement("path");
album.appendChild(path);
path.appendChild(doc.createTextNode((String) table.getValueAt(i, 3)));
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("C:/Users/David/test.xml"));
transformer.transform(source, result);
}
Java:
void loadList(NodeList n) throws ParserConfigurationException, SAXException, IOException{
String xs[] = new String[4];
int elementCounter = 0;
for(int i = 0; i < n.getLength(); i++){
NodeList a = n.item(i).getChildNodes();
for(int j = 1; j <= 7; j=j+2){
xs[elementCounter] = a.item(j).getTextContent();
elementCounter++;
}
addItems(xs[2], xs[1], xs[0], xs[3]);
elementCounter = 0;
}
}
Viele Grüße
reakky