Auf Thema antworten

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?



Oben