_di_IXMLNode, Verschachtelung
-
Hallo!
Ich möchte folgende XML-Struktur erzeugen:
<?xml version="1.0" encoding="UTF-16"?> <!--Dies ist eine maschinell erstellte XML Datei. Bitte nicht ändern!--> <CONFIG> <PROFILE> <PROFIL> <NR>1</NR> </PROFIL> <PROFIL>Hallo</PROFIL> </PROFILE> </CONFIG>
Dazu habe ich zwei Routinen geschrieben, die ein XML-Objekt erzeugen und speichern sollen. Die Ausgabe sieht leider so aus:
<?xml version="1.0" encoding="UTF-16"?> <!--Dies ist eine maschinell erstellte XML Datei. Bitte nicht ändern!--> <CONFIG> <PROFILE> <PROFIL/> <PROFIL>Hallo</PROFIL> </PROFILE> </CONFIG>
, wobei beim Erstellen des <NR>-Tags eine Exception ausgelöst wird.
Da ich schon alles versucht habe und keine Erklärung finden konnte, hier der Quelltext:if ((Element != NULL) && (type != NULL) && (arg != NULL)) { _di_IXMLNodeList NodeList = XML->DocumentElement->ChildNodes; /**/_di_IXMLNode Node = NodeList->FindNode(WideString(Element));/*Node=NULL*/ _di_IXMLNode SubNode = Node->AddChild(type); /* In obiger Zeile wird immer die Exception auslöst. */ SubNode->NodeValue = WideString(arg); }
Mit der Methode IXMLDocument::CreateElement passiert genau das gleiche.
Sobald das Element "NR" erzeugt werden soll, wird in der oben markierten Zeile
Node mit NULL belegt und es folgt eine Access-Violation in der Zeile darunter.
Es scheint an der Verschachtelungsebene zu liegen, jedenfalls funktionieren die
exakt gleichen Anweisungen eine Ebene höher mit den <PROFIL>-Tags.
Die Variablen Ebene, type und arg werden an die Routine als AnsiString-Objekte
übergeben, alle anderen möglichen Typen habe ich auch durchprobiert.
Weiß jemand, wie das zu beheben ist? Ich bin ziemlich verzweifelt...Danke, josocop
[ Dieser Beitrag wurde am 26.05.2003 um 02:37 Uhr von josocop editiert. ]
[ Dieser Beitrag wurde am 26.05.2003 um 02:39 Uhr von josocop editiert. ]