# Wie kann ich eine unter SAX eingelesene XML bearbeiten?



## Mehrlin (9. Dez 2011)

Hallo Leute!
Seit ein paar Tagen beschäftige ich mich mit XML unter Java....(und verzweifel schon langsam)

Aktueller Stand:
Ich habe eine Xml mit hilfe von SAX eingelesen und die "Knoten" sind bereits in einer NodeList.

Meine Aufgabe:
Ich muss eine neue ChildNode erstellen und diese mit Inhalt füllen und dann die Xml wieder speichern.

Mein Problem ;(

Ich komm einfach nicht drauf wie ich dass mit dem bearbeiten der bereits vorhandenen XML machen soll??

Hat jemand vlt ein Codebeispiel in dem er eine vorhandene XML einliest sie bearbeitet und wieder speicher???


----------



## Mehrlin (9. Dez 2011)

<?xml version="1.0"?>
<parameter>
	<gateways>
		<gateway id="1">
			<namen>Gateway</namen>
			<url>Irgendeine URL</url>
		</gateway>
		<gateway id="2">
			<namen>Gateway2</namen>
			<url>Irgendeine URL</url>
		</gateway>
		<gateway id="3">
			<namen>Gateway3</namen>
			<url>Irgendeine URL</url>
		</gateway>
		<gateway id="4">
			<namen>Gateway4</namen>
			<url>Irgendeine URL</url>			
		</gateway>
		<gateway id="5">
			<namen>Gateway5</namen>
			<url>Irgendeine URL</url>			
		</gateway>
	</gateways>
	<directory_source>E:/5-TEST/xml-Files</directory_source>
	<firstborder>0</firstborder>
	<secondborder>0</secondborder>
	<firstpause>0</firstpause>
	<secondpause>0</secondpause>
</parameter>



Hier soll ich dann unter Java einen neuen Namen und eine Neue URL erstellen können

zB : 
<gateway id="NEUE">
			<namen>Gateway NEU</namen>
			<url>Irgendeine NEUE URL</url>			
		</gateway>


----------



## Gasssst (10. Dez 2011)

Ich nehm mal an du meinst DOM, dann fügst du mit appendChild einen neuen Knoten ein, den du mit Document#createXXX erstellst.


----------



## Mehrlin (12. Dez 2011)

Danke


----------



## Mehrlin (12. Dez 2011)

so klappt es !! 


```
public void newParameter(String url, String name) {

		

		Document document = doc;

		Element gatewayElement = document.createElement("gateway");
		Element namenElement = document.createElement("namen");
		Element urlElement = document.createElement("url");

		Node nodetest = knotenliste2.item(0);

		nodetest.appendChild(gatewayElement);

		NodeList elements = nodetest.getChildNodes();
		int a = 0;
		a = elements.getLength();
		System.out.println("länge "+a);
		
		Node nodetest2 = elements.item(a-1);
		nodetest2.appendChild(namenElement);
		nodetest2.appendChild(urlElement);

		NodeList elements2 = nodetest2.getChildNodes();
		Node nodetest3 = elements2.item(0);
		nodetest3.setTextContent(name);
		nodetest3 = elements2.item(1);
		nodetest3.setTextContent(url);
		System.out.println(nodetest3);

		StringWriter stringWriter = new StringWriter();
		try {
			Source source = new DOMSource(document);

			Result result = new StreamResult(stringWriter);
			TransformerFactory factory = TransformerFactory.newInstance();
			Transformer transformer = factory.newTransformer();
			transformer.transform(source, result);

		} catch (TransformerConfigurationException e) {
			e.printStackTrace();
		} catch (TransformerException e) {
			e.printStackTrace();
		}

		try {

			FileWriter fw = new FileWriter(
					"C:\\config.xml");

			fw.write(stringWriter.getBuffer().toString());

			fw.flush();
			fw.close();
		} catch (IOException e) {

			System.out.println("Nicht möglich");
			e.printStackTrace();

		}

	}
```


----------

