加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-x使用tinyxml2解析&存储xml

发布时间:2020-12-14 19:13:00 所属栏目:百科 来源:网络整理
导读:导入头文件: #include "support/tinyxml2/tinyxml2.h" 一:创建xml并保存 //要储存XML文件的路径 std::string filePath = CCFileUtils::sharedFileUtils()-getWritablePath() + "wociao.xml"; //xml文档 XMLDocument *pDoc = new XMLDocument(); if (NULL==

导入头文件:
#include "support/tinyxml2/tinyxml2.h"

一:创建xml并保存

//要储存XML文件的路径
    std::string filePath = CCFileUtils::sharedFileUtils()->getWritablePath() + "wociao.xml";
    //xml文档
    XMLDocument *pDoc = new XMLDocument();
    if (NULL==pDoc) {
        return ;
    }
    //xml声明
    XMLDeclaration *pDel = pDoc->NewDeclaration("xml version="1.0" encoding="UTF-8"");
    if (NULL==pDel) {
        return ;
    }
    pDoc->LinkEndChild(pDel);
    //节点plist
    XMLElement *plistElement = pDoc->NewElement("plist");
    plistElement->SetAttribute("version","1.0");//给节点设置属性
    pDoc->LinkEndChild(plistElement);
        //节点dict
        XMLElement *dictElement = pDoc->NewElement("dict");
        plistElement->LinkEndChild(dictElement);
            //节点key
            XMLElement *keyElement = pDoc->NewElement("key");
            keyElement->LinkEndChild(pDoc->NewText("keyText"));//给节点设置值
            dictElement->LinkEndChild(keyElement);
            //节点string
            XMLElement *stringElement = pDoc->NewElement("string");
            stringElement->LinkEndChild(pDoc->NewText("stringText"));//给节点设置值
            dictElement->LinkEndChild(stringElement);
            //节点array
            XMLElement *arrayElemet = pDoc->NewElement("array");
            dictElement->LinkEndChild(arrayElemet);
                for (int i = 0; i<3; i++) {
                    XMLElement *strEle = pDoc->NewElement("string");
                    strEle->LinkEndChild(pDoc->NewText("icon"));
                    arrayElemet->LinkEndChild(strEle);
                }
    
    pDoc->SaveFile(filePath.c_str());//保存文件 参数:路径
    pDoc->Print();//打印
    delete pDoc;
输出:

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
    <dict>
        <key>keyText</key>
        <string>stringText</string>
        <array>
            <string>icon</string>
            <string>icon</string>
            <string>icon</string>
        </array>
    </dict>
</plist>

二、解析

//xml文件路径
    std::string filePath = CCFileUtils::sharedFileUtils()->getWritablePath() + "wociao.xml";
//xmlDoc
    XMLDocument *pDoc = new XMLDocument();
    pDoc->LoadFile(filePath.c_str());
    //得到跟节点
    XMLElement *rootEle = pDoc->RootElement();
    //打印节点的值
    CCLog("%s",rootEle->GetText());
    //节点的第一个属性
    const XMLAttribute *attribute = rootEle->FirstAttribute();
    //打印属性的名字和值
    CCLog("%s %s",attribute->Name(),attribute->Value());    
    //查找节点的属性值
    float value = 0.1f;
    rootEle->QueryFloatAttribute("version",&value);
    CCLog("%f",value);
    //设置节点属性值
    rootEle->SetAttribute("version",1.4);
    //跟节点的第一个字节点 dict
    XMLElement *dictEle = rootEle->FirstChildElement();
    //dict下面的子节点 key
    XMLElement *keyEle = dictEle->FirstChildElement();
    //打印key节点的值
    CCLog("%s,%s",keyEle->Name(),keyEle->GetText());
    //key节点的next节点 string
    XMLElement *stringEle = keyEle->NextSiblingElement();
    CCLog("%s,stringEle->Name(),stringEle->GetText());
    //string节点的子节点
    XMLElement *nulXmlEle = stringEle->FirstChildElement();
    if (NULL == nulXmlEle) {
        CCLog("string下面没有子点了");
    }
    //保存xml
    pDoc->SaveFile(filePath.c_str());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读