# JDOM: Wert schreiben bzw. ändern



## AlexDozer (24. Mai 2009)

Hi,

ich lese hier ein XML-File ein. Nun möchte ich den Wert eines Elementes ändern bzw setzen. Aber es leider ändert sich an der Datei selber nicht d.h. es wird kein Wert gesetzt 

```
<!DOCTYPE basis [
<!ELEMENT basis (wert)*>
<!ELEMENT wert (name, column)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT column (#PCDATA)>
] >
```


```
SAXBuilder sax = new SAXBuilder();
		Document doc = sax.build(new File("myFile.xml"));
		
		Element root = doc.getRootElement();
		Element wert;
		Element name;
		Element column;
	
		int amount = root.getChildren().size();
		
		for (int i = 0; i < amount; i++)
		{
			wert 	= (Element) root.getChildren("wert").get(i);
			
			column 	= wert.getChild("column");
			name 	= wert.getChild("name");
			
			column.setText(name.getValue());
		}
```

Und zwar soll der Inhalt von Element name ins Element column. Leider ändert sich aber am Element nichts d.h. es bleibt leer. 

Gruß Alex


----------



## SlaterB (24. Mai 2009)

Änderungen im Speicher werden nicht automatisch auf die Datei übertragen

XML-Datei mit JDom erzeugen - Java @ tutorials.de: Forum, Tutorial, Anleitung, Schulung & Hilfe


----------



## AlexDozer (24. Mai 2009)

Danke erstmal.

Leider wird in dem Tutorial nur erklärt wie man ein neues XML-File erstellt. Ich möchte aber nur ein vorhandenes ändern und kein neues erstellen :/


Gruß Alex


----------



## SebiB90 (24. Mai 2009)

AlexDozer hat gesagt.:


> Und zwar soll der Inhalt von Element name ins Element column. Leider ändert sich aber am Element nichts d.h. es bleibt leer.


Was heißt leer? Wo leer?
Nur weil du die set Methode aufrufst, wird die datei nicht aktualisiert. Du musst die Datei auch schreiben.


----------



## AlexDozer (24. Mai 2009)

@Sebi90: Das ist ja mein Problem. Ich finde im Internet immer nur Anleitungen wie man ein XML-File erstellt aus einem Document. Ich habe aber schon ein XML-File welches nur an den enstprechenden Stellen geändert werden soll.

Wie speichere ich die Änderungen ab? 

So geht es zumindest nicht:

```
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc, new FileOutputStream("myFile.xml"));
```

Da die Datei myFile.xml, welche ich ändern möchte, ja schon besteht passiert hier nichts


----------



## AlexDozer (24. Mai 2009)

Also ich bin mittlerweile bei dieser Lösung hier. Leider ändert sich aber in meinem XML-File nichts 

```
SAXBuilder sax = new SAXBuilder();
		File file = new File("myFile.xml");
		Document doc = sax.build(file);
				
		Element root = doc.getRootElement();
		
		Element wert;
		Element name;
		Element column;
	
		int amount = root.getChildren().size();
		
		for (int i = 0; i < amount; i++)
		{
			wert 	= (Element) root.getChildren("wert").get(i);
			
			column 	= wert.getChild("column");
			name 	= wert.getChild("name");
			
			column.setText(name.getValue());
			
			
			
		}
		
		FileOutputStream fos = new FileOutputStream(file);
		XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
		outputter.output(doc, fos);
		fos.flush();
		fos.close();
```


----------



## AlexDozer (24. Mai 2009)

Es geht jetzt. Es lag daran das der Open XML Editor noch geöffnet war. Jetzt muss ich nur noch rausfinden wie man den Doctype noch richtig schreibt. 

Gruß Alex


----------

