моих знаний 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, кажется, что он разбился, но я не уверен, как я злоупотребляю им. –