我的XML知識足以讓人滿意。如何在TinyXML中盲解析
我想要做的就是盲目地解析一個XML字符串,並獲得從根開始的所有元素和屬性。我不能像文檔中的示例那樣使用遞歸,我似乎無法掌握如何通過循環來完成它。我知道足以從XML字符串獲取根,並且可以遍歷字符串,但似乎無法獲取屬性或文本值。
我不知道任何標籤的任何名稱,需要在解析時找出它們。任何人有任何想法我如何開始或例子?
感謝
這裏是我到目前爲止像這樣的XML字符串代碼,工作,除非其喜歡的位置和國家嵌套元素:
string strData = "<MyStuff mystring1=""111"" mystring2=""223"">\
<MYTAG1>0</MYTAG1>\
<MYTAG2>0</MYTAG3>\
<MYTAG4>0</MYTAG4>\
<location><country>GreatBritain</country></location>\
</MyStuff>";
void parseXmlString2(TiXmlNode* root)
{
TiXmlNode* child;
TiXmlElement* elem = (TiXmlElement*)root;
TiXmlAttribute* pAttrib = elem->FirstAttribute();
//This gets the root and its attributes.
while(pAttrib)
{
cout << "Value: " << pAttrib->Name() << ":" << pAttrib->Value() << endl;
pAttrib=pAttrib->Next();
}
//Now I want to parse up the rest.
//Does not work if nested such as <location><country>GreatBritain</country></location>
for(child = root->FirstChild(); child; child = child->NextSibling())
{
//Test For child.
if(child->FirstChild())
{
//My helper fuct to tell type
//getType(child->FirstChild()->Type());
TiXmlNode* myChild;
for(myChild = child->FirstChild(); myChild; myChild = child->IterateChildren(child->FirstChild()))
{
cout << " " << myChild->Value() << endl;
}
}
}
}
謝謝,我會嘗試這一點,我不是在我工作的這個機器,但我想到當我嘗試這個時,它將所有東西視爲一個節點並跳過文本和屬性。 –
不,這給了我相同的結果,我想要做的,解析一個XML字符串而不知道它是什麼,並列出所有的節點,屬性,文本。我不確定我是否可以用一個循環或嵌套循環來做到這一點? –
我可以看到如何遍歷幾乎所有東西,我的問題是試圖使用IterateChildren,它似乎崩潰了,但我不知道我是如何濫用它。 –