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



## waldek87 (13. Mrz 2008)

hallo 

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

hintergrund:  ich will einstellungen in einer xml datei speichern:


```
<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

```
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


----------



## trazzag (13. Mrz 2008)

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?


----------



## trazzag (13. Mrz 2008)

Hier mal nen Beispielcode, wie eine Methode zum Speichern eines JDOM-Documents aussehen kann:


```
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();
		}
	}
```


----------



## waldek87 (14. Mrz 2008)

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


----------

