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


Anmelden zum Antworten