Löschen von neuen XML-Knoten geht nicht...

DocMcFly_2001

Grünschnabel
Hallo,

folgende Aufgabe habe ich zulösen. In meiner XML-Datei steht eine Vorlage-Konfiguration.
Diese soll beliebig dupliziert und gelöscht werden können.

Code:
...
<einstellungen>
  <konf>....</konf>
  <konf>....</konf>
  <konf>....</konf>
  <vorlage>....</vorlage>
</einstellungen>
...

Zu erst wollte ich die Vorlage duplizieren und umbennen - Umbennen ging nicht :confused:

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ügte 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. 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 was macht der Parser anders, wenn er den DOM-Baum aufbaut? :confused:
Bitte nicht vorschlagen: DOM-Baum abspeichern und neuladen. Das Beispiel oben ist sehr klein der Baum kann aber eine riesige Größe erreichen und er wäre doof - wenn ich den neu parsen lassen müsste - weil das viel zu langsam wäre.

Würde mich über Anworten 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;

... und hier noch ein Codeschnipsel:

Code:
   // Vorlage holen
   this.defaultNode = this.getNode("vorlage");
   NodeList defaultChilds = this.defaultNode.getChildNodes();

   // neuer Knoten
   Document doc = this.valueNode.getOwnerDocument();
   Node newItem = doc.createElement("item");
    
   // Childs von der Vorlage einfügen
    for(int i=0; i < defaultChilds.getLength(); i++){
      newItem.appendChild(defaultChilds.item(i).cloneNode(true));
    }

   // zu den Einstellungen einbauen
   this.valueNode.appendChild(newItem);
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück