
我觉得可以用iteratechildren或nextsibling进行遍历,然后用insertafterchild来插入节点
#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)//此结点所有子结点都处理完毕
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)