# JDOM Werte verändern



## pymote (30. Aug 2006)

Hallo,

wie kann ich Werte in einem XML-File aus Java ändern? die XML-Manipulation soll angeblich mit JDOM besonders einfach sein. ich möchte nur den Wert eines Elements überschreiben, ich führe keine Verschiebung von Elementen durch. gibt es dazu eine verständliche anleitung?

z.b. habe ich folgende struktur:


> <personen>
> <person>
> <name>hans</name>
> <alter>26</alter>
> ...


ändern möchte ich jetzt einfach den familienstand von allen personen mit namen "hans" auf "verheiratet" ändern.
die änderungen sollen in die gleiche datei geschrieben werden.

danke


----------



## byte (30. Aug 2006)

Ich empfehle als schnellen Einstieg: http://www.servlets.com/speaking/jdom-javaone.pdf

Und dann: http://www.jdom.org/docs/apidocs/index.html


----------



## pymote (30. Aug 2006)

danke für den kleinen einstieg.

bisher konnte ich meinen xml-tree auch durchparsen und den entsprechenden wert ändern.
wenn ich allerdings das ergebnis zurückschreibe, werden die änderungen nicht berücksichtigt. muss ich die änderungen irgendwie dem übergeordneten knoten bis zum doc root bekannt geben?


----------



## byte (30. Aug 2006)

Nein, aber Du musst das Document auch wieder in eine Datei schreiben. Hast Du das gemacht? Zeig am besten mal den Code, sonst kann man nur raten.


----------



## pymote (30. Aug 2006)

hi, hier mal mein code:

```
SAXBuilder builder = new SAXBuilder();
		Document doc = builder.build("file:///C:/test.xml");
		
		Element elRoot = doc.getRootElement();
		Element elPersonen = elRoot.getChild("Personen");
		Iterator itrPersonen = elPersonen.getChildren("Person").iterator();
		while(itrPersonen.hasNext()){
			Element elPerson = (Element)itrPersonen.next();
			if(elPerson.getAttribute("name").getValue().equals("hans")){
				Element elKinder = elPerson.getChild("Kinder");
				Iterator itrKinder = elKinder.getChildren("Kind").iterator();
				while(itrKinder.hasNext()){
					Element elKind = (Element)itrKinder.next();
					if(elKind.getChild("alter").getText().equals("7")){
						Element elSchule = elKind.getChild("schule");
						elSchule.setText("realschule");
					}
				}
			}
		}
		doc.setRootElement(elRoot);
		Format format = Format.getPrettyFormat();
		format.setEncoding("UTF-8");
		XMLOutputter outputter = new XMLOutputter(format);
		outputter.output(doc, new FileOutputStream(new File("C:/test.xml")));
```

wie gesagt, er schreibt die veränderungen nicht in die datei


----------

