JDOM element ändern funzt nich :( [problem gelöst]

Status
Nicht offen für weitere Antworten.

waldek87

Mitglied
hallo

ich quäle mich hier schon seit geraumer zeit mit java rum^^

hintergrund: ich will einstellungen in einer xml datei speichern:

Code:
<ha>
	<norb name="test1">norbert</norb>
	<norb name="test2">hubert</norb>
	<norb name="test3">hans</norb>
</ha>

ich durchlaufe die struktur mit einem iterator. das element, welches den inhalt "hubert" hat, soll in den inhalt "1234" geändert werden. doch es geht nicht .. 🙁


folgender code ist inhalt vom try-block
Code:
		try
		{
			String alt = "hubert";
			String neu = "1234";
			File f = new File("./data/test123.xml");
			SAXBuilder builder = new SAXBuilder();
			doc = builder.build(f);
			Element root = doc.getRootElement();
			List liste = root.getChildren();
			Iterator iterator = root.getChildren().iterator();
			int zaehler = 0;
			while(iterator.hasNext())
			{
				Element equip = (Element) liste.get(zaehler);
				if(equip.getText().equals(alt))
					{
						equip.setText(neu);
						System.out.println("inhalt geändert!");
					}
				System.out.println(equip.getText());
				zaehler++;
				iterator.next();
			}
		}

der iterator durchläuft die struktur ohne probleme und gibt auch "inhalt geändert!" in der konsole aus, doch der wert bleibt der gleiche 🙁

weiß einer warum?

danke im vorraus
 
schreibst du den dein JDOM-Objekt später auch wieder als Datei auf die Platte? bzw. hast du die Datei vllt. geöffnet, daß sie gesperrt ist und dein Prog nicht reinschreiben kann?
 
Hier mal nen Beispielcode, wie eine Methode zum Speichern eines JDOM-Documents aussehen kann:

Code:
public void saveXML(String datei, Document document) {
		try {

			/* FileOutputStream zum schreiben der Datei */
			FileOutputStream fos = new FileOutputStream(datei, false);

			/*
			 * Schreiben der XML-Datei
			 */
			XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
			out.output(document, fos);
			fos.close();

		} catch (IOException ioe) {
			ioe.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
 
danke .. lag wirklich an dem OutputStream 🙂

hab mich da leider nur an die java insel 7 gehalten, und da wird nichts von einem outputstream erwähnt 🙁

na gut problem gelöst 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben