1. 程式人生 > >XML檔案遍歷實現中的下一節點獲取函式--近似深度優先

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檔案中另設引數。

 可以改變幾個判斷變數的設定,實現不同的遍歷策略。 ---------------------  作者:songge 版權宣告:本文為博主原創文章,轉載請附上博文連結!