XML neuen Wert setzen
-
hallo,
ich habe eine XMl Datei mit import org.w3c.dom.* erstellt. diese sieht wie folgt aus.<?xml version="1.0" ?>
<Bordero>
<CurrentNo>1</CurrentNo>
</Bordero>Jedoch möchte ich jedes mal wenn sie die CurrentNo ändert diese in der XML datei aktualisieren. Wie kann ich das machen. So eine Datei zu erstellen ist ja nicht schwer gewesen aber ich weiß einfach nicht wie ich auf CurrentNo zugreifen kann un den Wert zum Beispiel von 1 auf 10 ändern.
-
Hallo,
hier mal ein Beispiel:
// erstmal eine neue Factory erstellen: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //factory.setNamespaceAware(true); //factory.setValidating(true); // 1. Argument ist die XML-Datei in der dein XML gespeichert ist File f = new File(argv[0]); // neuen DocumntBuilder DocumentBuilder builder = factory.newDocumentBuilder(); // die XML-Datei parsen Document document = builder.parse(f); // hole eine Liste aller "CurentNo"-Tags NodeList list = document.getElementsByTagName("CurrentNo"); // das erste Element in der Liste holen Node node = list.item(0); // den Textknoten des CurrentNo-Elements holen Text value = (Text)node.getFirstChild(); // neuen Wert setzen -> 2. Kommandozeilenargument value.setData(argv[1]); // den veränderten DOM-Baum wieder in die XML_Datei zurückschreiben TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(f); transformer.transform(source, result);
Wenn du das Ganze nun in eine Test-Klasse z.B. "test.java" einbaust (Exceptions abfangen nicht vergessen -> siehe API) und dein XML z.B. in "datei.xml" speicherst, dann kannst du das folgendermaßen testen:
java test datei.xml 10
=> <CurrentNo>1</CurrentNo> wird dann auf <CurrentNo>10</CurrentNo> gesetzt.
MfG