# XML mit hilfe von JDOM abspeichern macht Problem



## Pasche (20. Jan 2005)

Ich habe auf einer JSP-Seite folgenden Code um eine XML-Datei zu erzeugen:


```
Document doc = new Document();

Element elRoot = new Element("umfragen");
Element elUmfrage = new Element("umfrage");

elUmfrage.setAttribute("email", (String) (session.getAttribute( "sEmail" )) );

elUmfrage.addContent((Element)new Element("vorname").addContent(new Text((String) (session.getAttribute( "sVorname" )))));
elUmfrage.addContent((Element)new Element("name").addContent(new Text((String) (session.getAttribute( "sName" )))));
elUmfrage.addContent((Element)new Element("bundesland").addContent(new Text((String) (session.getAttribute( "sBundesland" )))));
elUmfrage.addContent((Element)new Element("geschlecht").addContent(new Text((String) (session.getAttribute( "sGeschlecht" )))));
elUmfrage.addContent((Element)new Element("alter").addContent(new Text((String) (session.getAttribute( "sAlter" )))));

elRoot.addContent(elUmfrage);
doc.setRootElement(elRoot);

Format format = Format.getPrettyFormat();
format.setEncoding("iso-8859-1");
XMLOutputter xmlOut = new XMLOutputter(format);
xmlOut.output(doc, new FileOutputStream(getServletContext().getRealPath("details.xml")));
```

Das Ganze funktioniert soweit ja wunderbar. Da es aber nicht auf meinem Mist gewachsen ist, habe ich jetzt ein Problem wenn ich die JSP-Seite mehrmals aufrufe. Dann soll nicht jedesmal eine komplett neue Datei erzeugt werden, sondern der vorhandenen Datei sollen Elemente hinzugefügt werden.
Eine Möglichkeit wäre es sicherlich, alle bisherigen Einträge auszulesen und dann zusammen mit den neuen abzuspeichern. Das erscheint mir aber doch sehr umständlich und nicht wirklich performant. Gibt´s da nicht eine einfachere Möglichkeit um eine XML-Datei zu ergänzen ?


----------



## niemand (20. Jan 2005)

Ich weiß nicht, ob meine Überlegung richtig ist: Du kannst dem FileOutputStream beim Erstellen eine Boolean mitgeben, mit der du einstellst, ob an die Datei angehängt wird.

cu


----------



## Pasche (20. Jan 2005)

Bei Textdateien hab ich das mal gemacht, da funktionierte es auch. Aber bei XML Dateien soll ich ja nicht einfach alles anhängen sondern praktisch in der Mitte einfügen. Dein Vorschlag funktioniert leider nicht


----------



## DP (20. Jan 2005)

dem doc gibste halt ein addelement mit auf den weg...


----------



## Bleiglanz (21. Jan 2005)

>>Gibt´s da nicht eine einfachere Möglichkeit
>>um eine XML-Datei zu ergänzen ?

jsps sind multithreaded, d.h. mit dem "Einlesen + Anfügen + Rausschreiben" bei jedem HTTP Request erleidest wahrscheinlich irgendwann Schiffbruch


----------



## niemand (21. Jan 2005)

Hat jetzt nichts mit dem eigentlichen Thema zu tun, aber kann man das File für die Zeit nicht irgendwie sperren, wie man z.B. MySQL-Tables mit LOCK sperren kann?

cu


----------



## Bleiglanz (21. Jan 2005)

ja, normalerweise kannst du es für einen Schreibzugriff öffnen, dann blocken andere Versuche das zu tun

ist aber imho eh irgendwie schlecht entworfen, was genau soll denn gemacht werden?


----------

