Hallo,
folgende Aufgabe habe ich zulösen(keine Sorge keine Hausaufgabe ;-). In meiner XML-Datei stehen mehrer Konfigurationen und eine Vorlage-Konfiguration.
Die Vorlage soll beliebig dupliziert und die Konfigurationen aus der manipulierten Vorlage sollen gelöscht werden können. Die XML-Datei sieht ca. so aus...
Zuerst wollte ich die Vorlage duplizieren (clonen) und umbennen - Umbennen ging nicht
Also hab ich einen neuen <konf>-Knoten erzeugt und die Childs von <vorlage> kopiert. Das funktioniert. So weit so gut.
Das Löschen der geparste <konf> - Knoten ist auch kein Problem.
Jetzt kommt meine Frage und Problem - aus irgendeinem Grund kann ich neu hinzugefügten Knoten nicht löschen.
Ich verwende "Oracle JDeveloper". Der zeigt mir im Debugger-Mode an, dass in den neuen Knoten kein "fNodeIndex" haben - aber die geparsten Knoten schon.
Mein Vermutung ist nun: bei <einstellung>.remove(<neueKonf>) - sucht der <einstellung>-Knoten nach dem <neueKonf> Knoten mittels des "fNodeIndex" . Diesen <neueKonf>-Knoten kann er aber nicht finden, weil dieser keinen "fNodeIndex" hat.
Liege ich damit richtig? Wenn ja - wie kann ich dem Knoten einen solchen Index geben?
Warum kann ich keine Knoten umbennen? (fände ich sehr blöd, wenn das nicht geht)
Was macht der Parser anders, wenn er den DOM-Baum aufbaut?
Bitte nicht vorschlagen: DOM-Baum abspeichern und neuladen. Das Beispiel oben ist sehr klein. Der reale Baum kann aber eine riesige Größe erreichen und es wäre doof - wenn ich den neu parsen lassen müsste - weil das viel zu langsam wäre.
Würde mich über Anworten und Tipps freuen...
Clemens
P.S.Hier noch die Imports - falls es an meinen Packeten liegt:
folgende Aufgabe habe ich zulösen(keine Sorge keine Hausaufgabe ;-). In meiner XML-Datei stehen mehrer Konfigurationen und eine Vorlage-Konfiguration.
Die Vorlage soll beliebig dupliziert und die Konfigurationen aus der manipulierten Vorlage sollen gelöscht werden können. Die XML-Datei sieht ca. so aus...
Code:
...
<einstellungen>
<konf>....</konf>
<konf>....</konf>
<konf>....</konf>
<vorlage>....</vorlage>
</einstellungen>
...
Zuerst wollte ich die Vorlage duplizieren (clonen) und umbennen - Umbennen ging nicht
Also hab ich einen neuen <konf>-Knoten erzeugt und die Childs von <vorlage> kopiert. Das funktioniert. So weit so gut.
Das Löschen der geparste <konf> - Knoten ist auch kein Problem.
Jetzt kommt meine Frage und Problem - aus irgendeinem Grund kann ich neu hinzugefügten Knoten nicht löschen.
Ich verwende "Oracle JDeveloper". Der zeigt mir im Debugger-Mode an, dass in den neuen Knoten kein "fNodeIndex" haben - aber die geparsten Knoten schon.
Mein Vermutung ist nun: bei <einstellung>.remove(<neueKonf>) - sucht der <einstellung>-Knoten nach dem <neueKonf> Knoten mittels des "fNodeIndex" . Diesen <neueKonf>-Knoten kann er aber nicht finden, weil dieser keinen "fNodeIndex" hat.
Liege ich damit richtig? Wenn ja - wie kann ich dem Knoten einen solchen Index geben?
Warum kann ich keine Knoten umbennen? (fände ich sehr blöd, wenn das nicht geht)
Was macht der Parser anders, wenn er den DOM-Baum aufbaut?
Bitte nicht vorschlagen: DOM-Baum abspeichern und neuladen. Das Beispiel oben ist sehr klein. Der reale Baum kann aber eine riesige Größe erreichen und es wäre doof - wenn ich den neu parsen lassen müsste - weil das viel zu langsam wäre.
Würde mich über Anworten und Tipps freuen...
Clemens
P.S.Hier noch die Imports - falls es an meinen Packeten liegt:
Code:
import javax.xml.parsers.*;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
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.EntityReference;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;