XML-Datei auslesen und ändern

Hi,

Hier mal ein simples Beispiel erzeugt mit Java 6 und den Build-in Tools. Was verwendest Du?

Java:
package de.tutorials.xml;

import java.io.FileOutputStream;
import java.io.IOException;

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

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

public class ChangeDemo {

	ChangeDemo() {
		
		final String XMLFILENAME = "tableConfig.xml";
		
		try {
			
			
			
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document document = builder.parse(XMLFILENAME);
			
			String tableName = document.getElementsByTagName("tableName").item(0).getTextContent();
			String title = document.getElementsByTagName("title").item(0).getTextContent();
			String color = document.getElementsByTagName("color").item(0).getTextContent();
			
			System.out.println("Old Values:");
			System.out.println(tableName);
			System.out.println(title);
			System.out.println(color);
			
			tableName = "neueTabelle";
			title = "Hallo Universum";
			color = "giftgelb";
			
			System.out.println("\nNew Values:");
			System.out.println(tableName);
			System.out.println(title);
			System.out.println(color);
		
			document.getElementsByTagName("tableName").item(0).setTextContent(tableName);
			document.getElementsByTagName("title").item(0).setTextContent(title);
			document.getElementsByTagName("color").item(0).setTextContent(color);
			
			TransformerFactory.newInstance().newTransformer().transform(
					new DOMSource(document), new StreamResult(new FileOutputStream(XMLFILENAME)));
			
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TransformerConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TransformerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TransformerFactoryConfigurationError e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new ChangeDemo();

	}

}
 
Super, durch deinen Codeabschnitt
Java:
            TransformerFactory.newInstance().newTransformer().transform(

            new DOMSource(document), new StreamResult(new FileOutputStream(XMLFILENAME)));
spare ich mir den XMLOutputter, denn ich benutze auch Java 6.

Leider liegt der Fehler wohl woanders begraben, deshalb werd ich jetzt mal einen Kollegen fragen. Falls ich nicht weiterkomme, melde ich mich nochmal.
 
So ich habe den Fehler gefunden und er ist wirklich ärgerlich: Meine tableConfig.xml war mit tabstops versehen; diese wurden nicht erkannt. Als ich nun alles eng aneinandern geschrieben habe, hat es funktioniert. Da habe ich wahrscheinlich irgendwann mal drin rumgepfuscht, weil ich es ordentlicher machen wollte.

Vielen Dank noch für eure HIlfe, habt mir wirklich sehr geholfen!
 
Zurück