J
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. ]