Wie kann ich eine unter SAX eingelesene XML bearbeiten?

Mehrlin

Mitglied
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???
 
<?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>
 
Ich nehm mal an du meinst DOM, dann fügst du mit appendChild einen neuen Knoten ein, den du mit Document#createXXX erstellst.
 
so klappt es !! 🙂

Java:
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();

		}

	}
 

Zurück
Oben