# XML erstellen mit Jdom



## desmoloch (14. Mai 2004)

hi!

ich habe mir das Tutorial zu Java und JDOM (XML) durchgelesen.
Darin ist die rede von:

root.appendChild(new Element("kindElement"));

aber appendChild gibt es gar nicht?

wär cool wenn mir jemand helfen kann  wie füge ich denn dann ein Kind Element an den Wurzelknoten?


----------



## Christian Fein (14. Mai 2004)

> _Original geschrieben von desmoloch _
> *hi!
> 
> ich habe mir das Tutorial zu Java und JDOM (XML) durchgelesen.
> ...



Gibts wohl nicht mehr, nimm addContent(new Element("kindElement"));
ich werd das tutorial überarbeiten.

grüsse


----------



## Christian Fein (14. Mai 2004)

ist ueberarbeitet!


----------



## desmoloch (17. Mai 2004)

ok vielen dank 
das addcontent hatte ich gesehen, nur wusst ich net genau was das macht 
na gut ich hätt mir ja auch mal den quellcode anschauen können
danke!


----------



## Phlebiac (13. Juli 2005)

Hallo,
    ich habe mit addContent() folgendes Problem:

    Ich lese eine XML-Datei ein, die so aussieht:

```
<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE benutzerListe SYSTEM "BenutzerListe.dtd">
    
    <benutzerListe>
      <benutzer default="false">
    	<ClientBenutzerName>Jan</ClientBenutzerName>
    	<ClientPasswort>e2fc714c4727ee9395f324cd2e7f331f</ClientPasswort>
      </benutzer>
      <benutzer default="false">
    	<ClientBenutzerName>Sam</ClientBenutzerName>
    	<ClientPasswort>9f1804be66b7991cc3f2edf082b1663d</ClientPasswort>
      </benutzer>
      <benutzer default="false">
    	<ClientBenutzerName>Hendrik</ClientBenutzerName>
    	<ClientPasswort>81dc9bdb52d04dc20036dbd8313ed055</ClientPasswort>
      </benutzer>
    </benutzerListe>
```
 
    Diese lese ich so ein: 

```
private BenutzerEinstellungen() throws JDOMException, IOException {
    		File xmlFile = new File("BenutzerListe.xml");
    		SAXBuilder builder = new SAXBuilder(true);
    		
    
    		try {
    			Document doc = builder.build(xmlFile);
    		} catch (JDOMException e1) {
    			throw new JDOMException(getRes("benutzerJDOM"));
    		} catch (IOException e1) {
    			throw new IOException(getRes("einstIO"));
    		}
    	}
```
 
 Danach soll eine Methode ausgeführt werden, die ein neues Element erzeugt, dieses dem Document hinzufügt - mit addContent() und dann das Document in die Datei zurückschreibt:


```
public void neuenBenutzerAnlegen(String user, String pass)
    			throws IOException {
    		fileStream = new FileOutputStream(xmlFile);
    		outp = new XMLOutputter();
    		Element benutzer = new Element("benutzer");
    		benutzer.addContent(new Element(getXml("ClientBenutzer")));
    		benutzer.addContent(new Element(getXml("ClientPasswort")));
    		benutzer.getChild(getXml("ClientBenutzer")).setText(user);
    		benutzer.getChild(getXml("ClientPasswort")).setText(
    				new MD5(pass).compute());
    		benutzer.setAttribute(getXml("default"), "false");
    		doc.getRootElement().addContent(1, benutzer);
    
    		try {
    			outp.output(doc, fileStream);
   		 System.out.println("BenutzerAnlgen hat auf Benutzerliste.xml geschrieben.");
    
    		} catch (IOException e) {
    		    throw new IOException(getRes("io1") + " " + xmlFile.getName() + " "
    				    + getRes("io2"));
    		}
    	}
```
 
*Das Problem: *Wenn ich das so ausführe, wird in die XML-Datei nicht einfach das gesamte Document hineingeschrieben, sondern einfach das Document so wie es sein soll an den bestehenden Content der xml-Datei angehängt, so dass die XML-Datei danach so aussieht: 

```
<?xml version="1.0" encoding="UTF-8"?>
     <!DOCTYPE benutzerListe SYSTEM "BenutzerListe.dtd">
     
     <benutzerListe>
       <benutzer default="false">
     	<ClientBenutzerName>Jan</ClientBenutzerName>
     	<ClientPasswort>e2fc714c4727ee9395f324cd2e7f331f</ClientPasswort>
       </benutzer>
       <benutzer default="false">
     	<ClientBenutzerName>Sam</ClientBenutzerName>
     	<ClientPasswort>9f1804be66b7991cc3f2edf082b1663d</ClientPasswort>
       </benutzer>
       <benutzer default="false">
     	<ClientBenutzerName>Hendrik</ClientBenutzerName>
     	<ClientPasswort>81dc9bdb52d04dc20036dbd8313ed055</ClientPasswort>
       </benutzer>
     </benutzerListe>
    
    <?xml version="1.0" encoding="UTF-8"?>
     <!DOCTYPE benutzerListe SYSTEM "BenutzerListe.dtd">
     
     <benutzerListe>
    <benutzer default="false">
      	<ClientBenutzerName>neuerBenutzer</ClientBenutzerName>
      	<ClientPasswort>neuesPW</ClientPasswort>
        </benutzer>
       <benutzer default="false">
     	<ClientBenutzerName>Jan</ClientBenutzerName>
     	<ClientPasswort>e2fc714c4727ee9395f324cd2e7f331f</ClientPasswort>
       </benutzer>
       <benutzer default="false">
     	<ClientBenutzerName>Sam</ClientBenutzerName>
     	<ClientPasswort>9f1804be66b7991cc3f2edf082b1663d</ClientPasswort>
       </benutzer>
       <benutzer default="false">
     	<ClientBenutzerName>Hendrik</ClientBenutzerName>
     	<ClientPasswort>81dc9bdb52d04dc20036dbd8313ed055</ClientPasswort>
       </benutzer>
     </benutzerListe>
```
 
 Ich kann mir das leider überhaupt nicht erklären. kann mir da jemand helfen?


----------

