利用tinyxml如何递归遍历kml所有节点

 我来答
moxsone
2011-11-17 · TA获得超过3333个赞
知道大有可为答主
回答量:2796
采纳率:50%
帮助的人:1516万
展开全部
#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);//此结点所有子结点都处理完毕
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-11-17
展开全部
这个csdn上不是挺多资料的吗?见参考资料
手册也有。《TinyXML Tutorial 中文指南》

参考资料: http://blog.csdn.net/clever101/article/details/5334369

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式