我正在使用tinyXML来解析我的XML文档,但我遇到了问题,因为我不是它的专家。
考虑这种XML结构:
<element>
<element1>
text1
<element2>...</element2>
text4
</element1>
<element3>
text2
<element4>...</element4>
text3
</element3>
</element>
我知道在element1
上有文字和很多元素(我不知道有多少)。如何在element1
上获取所有文本,忽略其间的元素?
我尝试使用我想要的元素并使用getText()
,但它只获取文本,直到下一个元素(在这种情况下为element2
),丢失其余文本。
所以,这是我尝试的第一个解决方案:
void iterate(TiXmlNode* body) {
TiXmlNode* child;
for (child = body->FirstChild(); child; child = child->NextSibling())
{
if (child->Type() == TiXmlNode::TINYXML_TEXT)
cout << child->Value() << endl;
if (child->FirstChild())iterate(child->FirstChild());
}
return;
}
该函数用于迭代主节点的所有子节点和主节点的孙子节点(如果有的话)
它有点有用,但不是100%。现在它只输出text1
,然后跳转到text2
它不会显示text3
或text4
也不会在标记element2
和element4
之间显示文字(如果有的话)
编辑。它现在已经完成了100%的功能。