XML Tag Inhalt Ändern

Jeykas

Mitglied
Hallo,

meine Frage ist, wie ich in einem XML Dokument den Text zwischen Tags ändern kann ?

mein Code :

Java:
NodeList ndl2 = document.getElementsByTagName("Info");

in diesem Tag "Info" ist ein Item <Headline> blablabla</Headline>
und ich möchte das "blablabla" durch "hallo" ersetzen...

Java:
Node nodeheadline = ndl2.item(0);
Element headline = nodeheadline.Element;
headline.setText("Hallo");

aber das funktioniert in keinster Weise...
Ich hoffe ihr könnt mir helfen...
 
S

SlaterB

Gast
in jedem Fall musst du am Ende das Document wieder in einer Datei speichern wenn du eine geänderte Datei brauchst,
in der Hinsicht Code vorhanden?

> headline = nodeheadline.Element;
klingt allerdings nicht nach Java
 

Jeykas

Mitglied
Java:
File quelle = new File("test.xml");
File file = new File("file.xml");

in file.xml steht dasselbe wie in test.xml im Moment, aber nachdem ich es geändert habe soll eben was anderes drin stehen =)

Ja das sah mal so aus :
Java:
Node nodeheadline = ndl2.item(0);
Element headline = nodeheadline.getChildNodes().item(1).getChildNodes().item(2);
headline.setText("Hallo");

Ich probiere gerade rum....
 
Zuletzt bearbeitet:

Jeykas

Mitglied
OK, ich habe jetzt mal das :

Java:
		Node nodeheadline = ndl2.item(0);
		nodeheadline.getChildNodes().item(1).getChildNodes().item(1).setTextContent("Hallo");

Wie setzte ich jetzt diesen String bei dem File "file.xml" an diese Stelle, weil so setzt es den String bei dem File ein wo es die Infos auch holt...
 
Zuletzt bearbeitet:
S

SlaterB

Gast
hole dir das Ding darüber, nodeheadline.getChildNodes().item(1).getChildNodes().item(1)
und ändere dort den Text, selbst wenn man nichts über diese Dinge weiß, was auf mich auch zum Teil zutrifft,
wäre setTextContent() schon relativ leicht zu raten und das gibt es anscheinend in der API

danach wie gesagt noch speichern, das bitte nun wirklich erstmal im Internet/ in Tutorials nachschlagen,
'wie speichert man ein Document' ist kein Problem sondern eine Wissensgrundlage
 

Jeykas

Mitglied
Ich weiß das das kein Problem sondern eine Wissensfrage ist, zudem denke ich, das du mich nicht genau verstanden hast.
Ich schrieb, ich möchte den Inhalt in einem bestehenden Document ändern, warum sollte ich da nochmal eine abspeichern ??

Java:
Document doc2 = builder.parse("file.xml");
		NodeList ndl3 = doc2.getElementsByTagName("test");
	
		Node nodeheadline = ndl2.item(0);
		String hallo =nodeheadline.getChildNodes().item(1).getChildNodes().item(1).getTextContent();
	
		Node newnode = ndl3.item(0);
		newnode.getChildNodes().item(1).getChildNodes().item(1).setTextContent(hallo);
das ist mein code bist jetzt, aber der funktioniert leider nicht ganz, weil ich die Fehlermeldung
"Premature end of file" bekomme jetzt....
 

Jeykas

Mitglied
O, so bekomme ich zwar keine Fehler mehr, aber der Text in "file.xml" wird trotzdem nicht geändert ?

Java:
Document doc2 = builder.parse("file.xml");
NodeList ndl3 = doc2.getElementsByTagName("test");
	
Node newnode = ndl3.item(0);
newnode.getChildNodes().item(1).getChildNodes().item(1).setTextContent("Hallo-Headline");
 

Jeykas

Mitglied
Wenn ich die Änderung aber speichere, dann verunstaltet es meinen XML Code total ;(

Java:
Document doc2 = builder.parse("file.xml");
NodeList ndl3 = doc2.getElementsByTagName("test");
	
Node newnode = ndl3.item(0);
newnode.getChildNodes().item(1).getChildNodes().item(1).setTextContent("Hallo");
		
Writer out = new StringWriter();
OutputFormat of = new OutputFormat(doc2);
XMLSerializer serializer = new XMLSerializer(out, of);
serializer.setOutputCharStream(new java.io.FileWriter("file.xml"));
serializer.serialize(doc2);

so habe ich es gemacht, das funktioniert auch, die Änderungen werden übernommen, aber in meinem XML steht dann alles in einer Zeile...
 

Jeykas

Mitglied
Ich habe den Serializer gegen den Transformer umgetauscht, und es funktioniert jetzt, hier der Code:
Java:
Node newnode = ndl3.item(0);
		newnode.getChildNodes().item(1).getChildNodes().item(1).setTextContent("Hallo");
		
		TransformerFactory.newInstance().newTransformer().transform(new DOMSource(doc2),
				new StreamResult(new FileOutputStream("file.xml")));
 

Ähnliche Java Themen

Neue Themen


Oben