DOM, Werte mit setAttribute in XML schreiben

Status
Nicht offen für weitere Antworten.

mikee

Neues Mitglied
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:

Java:
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
 
Zuletzt bearbeitet von einem Moderator:
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.
 
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:

Java:
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
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.

Zurück
Oben