# Java, DOM und XML



## raphk (2. Januar 2006)

Hallo
Ich habe folgendes Problem:
Ich will mit einem GUI Programm den Benutzer Werte eingeben lassen die ich dann in eine XML Datei speicher. Zu dieser XML Datei existiert bereits eine DTD. Auslesen der Datei klappt und auch Werte reinschreiben. Nur nicht wenn die Werte verschachtelt sind. Ich erkläre:

```
<reservation>
<id></id>
<preis></preis>
<user>
<name></name>
<geburtstag></geburtstag>
</name>
</reservation>
```
Das wäre dann meine XML Datei und die Felder id und Preis bekomm ich mit DOM hin (kann sie sogar in die XML Datei schreiben und die werden korrekt angezeit). Was ich nicht hinbekomme sind die Tags <reservation> und alles was mit dem <user> zu tun hat.
D.h. wenn ich fertig bin sieht meine Datei so aus:

```
<id>123</id>
<preis>321</preis>
```

Wenn ich mit ...

```
Element wurzel = documentXML.createElement("reservation");            documentXML.appendChild(wurzel);
noeudsXML.put("reservation", wurzel );
```
... versuche bekomm ich eine Felermeldung "DOM006 Hierarchy request error". Das gleiche wenn ichs so versuch für den user.

Vielleicht weiss ja einer Rat. Wie gesagt das Problem hab ich nur bei verschachtelten Elementen. Die "normalen" bekomm ich hin.


----------



## Thomas Darimont (3. Januar 2006)

Hallo!

 Schau mal hier:

```
/**
  * 
  */
 package de.tutorials;
 
 import org.dom4j.Document;
 import org.dom4j.DocumentFactory;
 import org.dom4j.Element;
 import org.dom4j.io.XMLWriter;
 
 /**
  * @author Tom
  * 
  */
 public class XMLExample {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) throws Exception {
 		Document doc = DocumentFactory.getInstance().createDocument();
 		Element reservation = doc.addElement("reservation");
 
 		reservation.addElement("id").setText("123");
 		reservation.addElement("price").setText("100.99");
 
 		Element guest = reservation.addElement("guest");
 		guest.addElement("name").setText("Thomas");
 		guest.addElement("birthday").setText("03.01.2006");
 
 		XMLWriter writer = new XMLWriter(System.out);
 		writer.write(doc);
 		writer.close();
 	}
 }
```
 
 Dom4j findest du hier:
http://dom4j.org/

 Gruß Tom


----------



## raphk (4. Januar 2006)

Danke aber hatte in der Zwischenzeit mein Problem selber behoben. Manchmal genügt einfach nur ein bisschen überlegen!


----------

