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文件中另设参数。
可以改变几个判断变量的设置,实现不同的遍历策略。
---------------------