您的位置:首页 > 其它

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

2013-09-05 12:58 1466 查看
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文件中另设参数。

 可以改变几个判断变量的设置,实现不同的遍历策略。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml 遍历 深度优先
相关文章推荐