# DOM, Werte mit setAttribute in XML schreiben



## mikee (24. Apr 2009)

Hallo,
ich möchte mit Hilfe von DOM und SetAttribute einen Wert in einer XML Datei aktualisieren, Exception gibt's keine, in die XML Datei schreiben tut aber auch nicht:


```
private void writeData(String FilePath) {
 try {
  DocumentBuilderFactory factory =  DocumentBuilderFactory.newInstance();
  DocumentBuilder builder = factory.newDocumentBuilder();
  Document document = (Document) builder.parse(FilePath);
  Element documentElement = document.getDocumentElement();

  writeAccounts(documentElement.getElementsByTagName("accounts"));
    } catch (Exception e) {
      System.err.println(e.toString());
    }
}


private void writeAccounts(NodeList accounts) {
  Node account;
  Element accountElement;
  if (accounts != null && accounts.getLength() > 0) {
    for (int i = 0; i < accounts.getLength(); i++) {
      for (account = accounts.item(i).getFirstChild(); account != null; account = account.getNextSibling()) {
        if (account.getNodeType() != Node.ELEMENT_NODE) {
          continue;
        }
        accountElement = (Element) account;
        accountElement.setAttribute("name", "Herr Mitterhuber");
        System.out.println(accountElement.getAttribute("name"));
      }
    }
  }
}
```

Interessanterweise gibt der zweite System.out den aktualisierten Wert aus, nur wie gesagt wird er nicht in das XML File geschrieben. Wäre toll wenn jemand einen Tipp bereit hätte!

Grüße
Mike


----------



## mvitz (24. Apr 2009)

Du musst das file noch schreiben...

Was du aktuell machst ist:

1) Das aktuelle File komplett in den Speicher laden
2) Dort das Attribut hinzufügen

ABER das passiert alles nur im Speicher und nicht im File selber, du müsstest also anschließend noch ein File erstellen und das Document aus dem Speicher dort hinein schreiben.


----------



## SlaterB (24. Apr 2009)

da ist doch nirgendwo ein Speichern-/ Schreiben-Kommando?

dom xml schreiben - Google-Suche
->
xml schreiben und parsen in java - Java @ tutorials.de: Forum, Tutorial, Anleitung, Schulung & Hilfe


----------



## mikee (25. Apr 2009)

gibt Zeiten wo man vor lauter Bäumen den Wald nicht mehr sieht - ohne Schreiben geht nun mal nix, is klar - vielen Dank euch beiden!

Ich habe das Ganze mit DOM reingebastelt, falls jemand zusammen mit dem ursprünglichen Code Gebrauch haben sollte:


```
Transformer transformer = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource(document);
FileOutputStream os = new FileOutputStream(new File(xmlConfigFilePath));
StreamResult result = new StreamResult(os);
transformer.transform(source, result);
```

Grüße


----------

