Vielen Dank für deine Hilfe!
Einfügen eines neuen Leistungsnachweises funktioniert soweit. Allerdings bekomme ich das noch nicht hin, mit dem Ändern der Kontodaten.
Die xml Datei von oben. Den Java-Code habe ich etwas abgeändert:
[Java]import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class MyDOMParser {
private static void printNodes(NodeList nodelist) {
Node tmpNode, node;
NamedNodeMap nodeMap;
for (int i = 0; i < nodelist.getLength(); i++) {
tmpNode = nodelist.item(i);
if (tmpNode.getNodeType() == Node.ELEMENT_NODE) {
if (tmpNode.getChildNodes().getLength() == 1)
System.out.println(tmpNode.getNodeName() + ": "
+ tmpNode.getTextContent());
else
System.out.println("\n " + tmpNode.getNodeName() + "\n");
if (tmpNode.hasAttributes()) {
nodeMap = tmpNode.getAttributes();
for (int j = 0; j < nodeMap.getLength(); j++) {
node = nodeMap.item(j);
System.out.println(node.getNodeName() + ": "
+ node.getNodeValue());
}
}
}
if (tmpNode.hasChildNodes())
printNodes(tmpNode.getChildNodes());
}
}
private static void addLeistungsnachweis(Document doc, String KursNr,
String Erg, String GesPunkte, String Dat, String Ver) {
Element Kurs = doc.createElement("Kurs");
Element Note = doc.createElement("Note");
Element GesamtPunkte = doc.createElement("GesamtPunkte");
Element Datum = doc.createElement("Datum");
Element AnzVersuche = doc.createElement("AnzVersuche");
Kurs.appendChild(doc.createTextNode(KursNr));
Note.appendChild(doc.createTextNode(Erg));
GesamtPunkte.appendChild(doc.createTextNode(GesPunkte));
Datum.appendChild(doc.createTextNode(Dat));
AnzVersuche.appendChild(doc.createTextNode(Ver));
Node Leistungsnachweise = doc
.getElementsByTagName("Leistungsnachweise").item(0);
Leistungsnachweise.appendChild(Kurs);
Leistungsnachweise.appendChild(Note);
Leistungsnachweise.appendChild(GesamtPunkte);
Leistungsnachweise.appendChild(Datum);
Leistungsnachweise.appendChild(AnzVersuche);
}
private static void changeKontodaten(Document doc, String Inhaber,
String KntNr, String blz) {
Node Kontoinhaber = doc.getElementsByTagName("Kontoinhaber").item(0);
Kontoinhaber.setNodeValue(Inhaber);
Node Kontonummer = doc.getElementsByTagName("Kontonummer").item(0);
Kontonummer.setNodeValue(KntNr);
Node BLZ = doc.getElementsByTagName("BLZ").item(0);
BLZ.setNodeValue(blz);
}
public static void main(String[] args) {
try {
File xmlFile = new File(
"/Users/workspace/EA 3.4/src/NewFile.xml");
// Ziel für neuen XML-File
File xmlFileTarget = new File(
"/Users/workspace/EA 3.4/src/NewFile_new.xml");
DocumentBuilderFactory dbfactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder dBuilder = dbfactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
System.out.println("XML-Dokument "
+ doc.getDocumentElement().getNodeName());
System.out.println("-------------------------------");
if (doc.hasChildNodes())
printNodes(doc.getChildNodes());
// neuen Leistungsnachweis einfügen
addLeistungsnachweis(doc, "01770", "1.7", "88", "23.09.2014", "1");
// Kontodaten ändern
changeKontodaten(doc, "Hans Muster", "987 654 321", "250 100 20");
printNodes(doc.getChildNodes());
// Datei als XML-file speichern
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(xmlFileTarget);
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
}
}[/Java]
Was mache ich in der Methode changeKontodaten falsch?