XML数据存储详细版

http://www.bubuko.com/infodetail-638086.html

1.头文件

#include "tinyxml2/tinyxml2.h"

using namespace tinyxml2;




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

第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(UTF-8字符集)。

<GameCharpter num="12345">

元素的名称    属性:名称和值


<Charpter >

<CharpterNum>1</CharpterNum>

<level>

<lv>1</lv>

                           文本内容

<isLock>0</isLock>

</level>

<level>

<lv>2</lv>

<isLock>1</isLock>

</level>

</Charpter>

<Charpter>

<CharpterNum>2</CharpterNum>

<level>

<lv>1</lv>

<isLock>1</isLock>

</level>

<level>

<lv>2</lv>

<isLock>1</isLock>

</level>

</Charpter>

    <Charpter>

        needToChange

    </Charpter>

</GameCharpter>



文件拷贝

    //获取可读可写区域

    string path=FileUtils::getInstance()->getWritablePath();

    //拼接路径      并没有创造

    string xmlPath=path+string("charpter.xml");

    cout<<xmlPath<<endl;

    //获取 资源 里面的"charpter.xml路劲

    string path2=FileUtils::getInstance()->fullPathForFilename("charpter.xml");

    

    //判断可读可写区域是否有     "charpter.xml"路径

    if (!FileUtils::getInstance()->isFileExist(jsonPath) )

    {

        //获取资源

        string fileContents=FileUtils::getInstance()->getStringFromFile(path2);

        //打开或创造

        FILE *file =fopen(jsonPath.c_str(), "w");

        

        if (file)

        {

            //字符串输出

            //fputs(const char *str, FILE *stream) 把字符串写入到指定的流 stream 中,但不包括空字符。

            fputs(fileContents.c_str() , file);

            //保存 关闭

            fclose(file);

        }

        

    }*/




    //表示整个XML文档,不对应其中某个特定的节点。

    XMLDocument *myDocument=new XMLDocument();

    XMLError errorID=myDocument->LoadFile(xmlPath.c_str());

    

    if (errorID!=0)

    {

        log("Parse Error!\r\n");

        delete myDocument;

//        return;

    }

    

    

   // 1

    XMLElement* rootElement = myDocument->RootElement();

    log("RootKey=%s\r\n",rootElement->Name());元素名称

    RootKey=GameCharpter


    

    auto attr=rootElement->FirstAttribute();//求属性

    log("root attr name %s\n value:%s\n",attr->Name(),attr->Value());

     root attr name num   value:12345     属性:名称和值

    

    //              3

    XMLElement *charpterElement = rootElement->FirstChildElement();


    while (charpterElement!=NULL)

   {

        XMLElement* _element = charpterElement->FirstChildElement();

        if (_element!=NULL)

        {

            log("/******Charpter = %s******///",_element->GetText());//文本

           // NextSiblingElement:属性只返回元素节点之后的兄弟元素节点(不包括文本节点、注释节点)

          

           _element = _element->NextSiblingElement();

            while (_element!=NULL)

            {

                XMLElement* _lvelement = _element->FirstChildElement();

                printf("level = %s,",_lvelement->GetText());

                

                XMLElement* _isLockelement = _lvelement->NextSiblingElement();

                printf("isLock = %s",_isLockelement->GetText());

                log("");

                _element = _element->NextSiblingElement();

            }

        }

    

        

        charpterElement = charpterElement->NextSiblingElement();

    }


阅读更多
个人分类: cocos2d
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭