我的 XML 知识足以应付。
我想要做的是盲目地解析一个 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;
}
}
}
}