Problem mit Schließendem XML Tag beim Auslesen [gelöst]



  • Hallo C++ Forum,

    Ich lese folgende XML Datei aus:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <Import>
     <Item>
      <eintrag>
       <Name>Mustermann</Name>
       <Strasse>Mustermannstr. 1</Strasse>
       <land>DE</land>
       <Plz>123456</Plz>
       <Ort>MusterOrt</Ort>
       <knotenpunkt/>
      </eintrag>
     </Item>
    </Import>
    

    Dies gelingt mir mit folgendem C++ Code:

    try
      {
       _di_IXMLDocument XML = LoadXMLDocument("C:\\test.xml");
       _di_IXMLNodeList Zeile1 = XML->DocumentElement->ChildNodes->FindNode("Item")->ChildNodes;
    
       for (int Zeile1Nr = 0; Zeile1Nr < Zeile1->Count; Zeile1Nr++)
        {
         String Name1 = Zeile1->Get(Zeile1Nr)->GetNodeName();
         ShowMessage(Name1);
    
         _di_IXMLNodeList Zeile2 = Zeile1->FindNode(Name1)->ChildNodes;
    
         for (int Zeile2Nr = 0; Zeile2Nr < Zeile2->Count; Zeile2Nr++)
          {
           String Name2 = Zeile2->Get(Zeile2Nr)->GetNodeName();
           String Wert1 = Zeile2->Get(Zeile2Nr)->GetNodeValue();
           ShowMessage(Wert1);
          }
        }
      }
     catch(Exception &e)
      {
       MessageBox(Handle, e.Message.c_str(), "Fehler", MB_ICONERROR);
      }
    

    Mein Problem ist jetzt das ich beim Auslesen des XML Dokuments beim schließendem Tag "<Knotenpunkt/>" jedesmal die Fehlermeldung "Could not convert variant of Type (Null) into type (String)" bekomme. Vielleicht hat jemand einen Denkanstoß so das mir dieses Tag keine Probleme mehr macht ...



  • überprüfe erst ob dein Tag auch einen Text hat

    if (Zeile2->Get(Zeile2Nr)->IsTextElement) {
        String Wert1 = Zeile2->Get(Zeile2Nr)->GetNodeValue();
    }
    


  • Also doch so simpel 😉

    Danke!


Anmelden zum Antworten