利用tinyxml如何递归遍历kml所有节点
发布网友
发布时间:2024-03-14 06:15
我来回答
共2个回答
热心网友
时间:2024-07-20 14:27
#include <stdio.h>
#include <stdlib.h>
#include "tinyxml.h"
char * ShowNodeInfo(TiXmlElement *pCurrentNode);
int _tmain(int argc, _TCHAR* argv[])
{
TiXmlDocument aDoc("test.xml");
if ( ! aDoc.LoadFile() )
{
perror("打开test.xml失败:");
return -1;
}
TiXmlElement *pRoot = aDoc.RootElement();
TiXmlElement *pWork = pRoot;
ShowNodeInfo(pWork);
getchar();
return 0;
}
//递归访问
char * ShowNodeInfo(TiXmlElement *pCurrentNode)
{
//为NULL时表示一次递归完成
if ( NULL == pCurrentNode )
{
return "";
}
else if ( pCurrentNode->NoChildren() )//没有子结点则是最底层的结点
{
pCurrentNode->Print(stdout,0);
printf("\n");
ShowNodeInfo(NULL);
}
else if( ! pCurrentNode->NoChildren() )//有子结点则每个子结点都递归处理
{
TiXmlElement * pChilds = pCurrentNode->FirstChildElement();//获取第一个子结点
ShowNodeInfo(pChilds);//递归子结点
pChilds = pChilds->NextSiblingElement();//获取刚显示的结点的同级下一个结点
while ( NULL != pChilds )//递归处理此结点下的所有结点
{
ShowNodeInfo(pChilds);
pChilds = pChilds->NextSiblingElement();
}
ShowNodeInfo(NULL);//此结点所有子结点都处理完毕
}
}
热心网友
时间:2024-07-20 14:24
这个csdn上不是挺多资料的吗?见参考资料
手册也有。《TinyXML Tutorial 中文指南》