3D FPS

1234567890

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  57 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks

常用链接

留言簿(10)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

tinyxml 做个N层结构的配置文件

算法 当然差 FOR FOR两个循环 但不用这个又好似破坏OO的感觉

一般来讲tinyxml做解析xml配置文件都是结点指针顺住落去的 例如notepad++里的

我是本着不负责的心发表的

 

/************************************************************************/

/*作者:jimsmorong

   版本:V0

   日期::47 2008/5/5

/************************************************************************/

 

#include "tinyxml.h"

 

class DKTinyXmlConfigFile

{

public:

       DKTinyXmlConfigFile():pFilename(0),tixmldoc(0),deep(0),Findwhere(0){}

       DKTinyXmlConfigFile(char *pFilename):pFilename(0),tixmldoc(0),deep(0),Findwhere(0)

       {

              TiXmlDocument* doc = new TiXmlDocument(pFilename);

              bool loadOkay = doc->LoadFile();

              tixmldoc = doc;

       }

       ~DKTinyXmlConfigFile(){}

       bool SetVaule(char *vaule)

       {

              TiXmlText newText(vaule);

       Findwhere->ToElement()->ReplaceChild(Findwhere->ToElement()->FirstChild(),newText);

              tixmldoc->SaveFile();

              deep = 0;

              Findwhere = 0;

              return 1;

       }

       const char *GetVaule()

       {

              const char *temp = Findwhere->ToElement()->GetText();

              deep = 0;

              Findwhere = 0;

               return  temp;

       }

 

       DKTinyXmlConfigFile* Find(char *vaule)

       {

              if (deep == 0)

              {

                     //获取根节点

                     Findwhere = tixmldoc->RootElement();

                    

              }

             

              //循环获取Findwhere节点下面的节点

              for(TiXmlNode* child = Findwhere->FirstChild();

                     child;

                     child=child->NextSibling())

              {

                     //判断为元素类型并且是staticbox元素,Value()获取该标签的名称

                     if((child->Type() == TiXmlNode::ELEMENT) && (!strcmp(child->Value(),vaule)))

                     {

                            deep++;

                            Findwhere = child;

                            return (DKTinyXmlConfigFile *)(this);

                     }

                     else

                            return 0;        

              }

       }

 

protected:

 

private:

       char * pFilename;

       TiXmlDocument *tixmldoc;

       int deep;

       TiXmlNode* Findwhere;

 

};

 

/*CPP

DKTinyXmlConfigFile dkxml("test.xml");

//设置和得到在B下的C里的D  参数都是char *vaule

dkxml.Find("b")->Find("c")->SetVaule("ddddddFFFFddddd");

CString a( dkxml.Find("b")->Find("c")->GetVaule());

 

//xml

那个A是不分析的

<?xml version="1.0" encoding="utf-8" ?>

<a>

<b>

<c>ddddddFFFFddddd</c>

</b>

</a>

*/

下载http://www.cppblog.com/Files/jimsmorong/quickfile.rar


posted on 2008-05-06 00:53 DK_jims 阅读(522) 评论(1)  编辑 收藏 引用 所属分类: other

Feedback

# re: 原 tinyxml 做个N层结构的配置文件 2008-05-06 22:51 hakuci
高手啊!!
  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理