微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML文件遍历实现中的下一节点获取函数--近似深度优先

void CAupClass::AstNextNode(tixmlNode *Cat)
{
if(NULL!=Cat->FirstChildElement()&&(beHindNode==Cat->PrevIoUsSibling()||beHindNode==NULL))

//小猫下水
{
beHindNode=Cat;
handwalker=Cat->FirstChild();
}
if(Cat->NextSibling()!=NULL&&(beHindNode==Cat->PrevIoUsSiblin)){ //小猫捉鱼
beHindNode=Cat;
handwalker=Cat->NextSibling();
}
if(Cat->NextSibling()==NULL&&Cat->PrevIoUsSibling()==beHindNode) //小猫爬楼梯
{
beHindNode=Cat;
handwalker=Cat->Parent();
while(handwalker->NextSibling()==NULL)
{
handwalker=handwalker->Parent();
if(strcmp(handwalker->Value(),"RootNodeName")==0)
return;
}
beHindNode=handwalker;
handwalker=handwalker->NextSibling();
}

}

其中beHindNode用于记录最新的已检节点,handWalker作为结果返回,本函数可以使遍历避免重复并且无需在XML文件中另设参数。

可以改变几个判断变量的设置,实现不同的遍历策略。

原文地址:https://www.jb51.cc/xml/299886.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。