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.


Log in to reply