TinyXml Problem
-
Hi,
ich bin gerade dabei TinyXml in mein Projekt zu integrieren, habe aber nun folgendes Problem:
XML-Datei:<?xml version="1.0" standalone=no> <style> <text>Test</text> </style>
Code:
TiXmlDocument *pStyle = new TiXmlDocument(pcPath); if(!pStyle->LoadFile(pcPath)) { return FALSE; } TiXmlNode *pNode = NULL; TiXmlElement *pElement = NULL; pNode = pStyle->FirstChildElement("style"); pElement = pNode->ToElement(); while(pElement) { MessageBox(0, pElement->Value(), 0, 0); pNode = pElement->NextSibling(); pElement = pNode->ToElement(); } delete pStyle; pStyle = NULL;
Es geht jetzt nicht ums Code-Design ;).
Eigentlich sollten so die Unterelemente von 'style' aufgelistet werden, doch ich bekomme nur 'style' als Ausgabe. Wie komme ich nun zu dem 'text'-Tag?
Und wie komme ich zu dem von den 'text'-Tags eingeschlossenem 'Test'Danke im Voraus
M.T.
-
Lass pElement raus und ersetz die while-Schleife durch das hier:
for(pNode = pNode->FirstChild(); pNode; pNode = pNode->NextSiblingElement()) { if(node) { std::cout << pNode->Value() << std::endl; } else { std::cout << "Knoten \"text\" nicht gefunden." << std::endl; } }
Mit deinem
pNode = pStyle->FirstChildElement("style");
bekommst du ja einen Zeiger auf den Tag der den <text> Tag umgibt. Du musst also die Kinder dieses Tags duchgehen. Mit
pNode = pNode->FirstChild()
holst du dir das erste Kind.
MitpNode = pNode->NextSiblingElement()
holst du dir immer einen Zeiger auf das jeweils nächste Kind oder NULL.(Bei dir wäre schon beim zweiten Mal Schluss)
Und zwar solange bis pNode NULL ist.
-
Danke, so funktioniert's
M.T.