XML erstellen mit Jdom

desmoloch

Mitglied
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?
 
Original geschrieben von desmoloch
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?

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

grüsse
 
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!
 
Hallo,
ich habe mit addContent() folgendes Problem:

Ich lese eine XML-Datei ein, die so aussieht:
Code:
<?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:
Code:
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:

Code:
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:
Code:
<?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?
 
Zuletzt bearbeitet:
Zurück