Tinyxml
-
Hallo c-plusplus community,
ich arbeite zur Zeit mit TinyXML um einen XML-String zu parsen.
Der String sieht wiefolgt aus:<?xml version=\"1.0\" ?> <Packet> <ParsedDataElement> <Name>name1</Name> <RawValue>1</RawValue> </ParsedDataElement> <ParsedDataElement> <Name>name2</Name> <RawValue>2<RawValue> </ParsedDataElement> <ParsedDataElement> <Name>name3</Name> <RawValue>3</RawValue> </ParsedDataElement> <ParsedDataElement> <Name>name4<Name> <RawValue>4</RawValue> </ParsedDataElement> <ParsedDataElement> <Name>name5</Name> <RawValue>5</RawValue> <ParsedDataElement> </Packet>
mein quellcode sieht so aus:
TiXmlDocument doc; doc.Parse(xmlStr); //hier ist der xml string enthalten TiXmlHandle hDoc(&doc); //TiXmlHandle* motePacket; //first Node TiXmlElement* pElem; TiXmlElement* pElemLev2; TiXmlHandle hRoot(0), nextRoot(0); pElem=hDoc.FirstChildElement().FirstChildElement().Element(); //parsedData while(pElem){ pElemLev2=(TiXmlHandle(pElem)).FirstChildElement().Element(); nextRoot=TiXmlHandle(pElem); if(pElemLev2){ cout<<pElemLev2->GetText(); pElemLev2=pElemLev2->NextSiblingElement(); cout<<": "<<pElemLev2->GetText()<<endl; } pElem=pElem->NextSiblingElement(); }
Für die ersten zwei elemente Funktioniert dieser Quellcode wie vorgestellt.
Jedoch bricht er nach dem zweiten durchlauf der while schleife einfach ab (pElem ist 0x00).
Die Ausgabe zeigt daher nur: "name1: 1\n name2: 2\n" an...Hat jemand einen Tipp für mich an was es liegen könnte? Auch ein Tipp wie ich es anders realisieren könnte wäre super.
vielen Dank
Hugo
-
Hast du den xmlString mal in eine xml Datei geschrieben und dir im Broser ausgeben lassen?
Dein xmlString enthält Fehler.