微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我用的是2.1.4的cocos2d-x,里面自带有tinyxml2库。好像2.1.0以上都有了

导入头文件
#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\");
    pDel) {
         ;
    }
    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(stringTextLinkEndChild(stringElement);
            节点array
            XMLElement *arrayElemet = pDoc->NewElement(array);
            dictElement->LinkEndChild(arrayElemet);
                for (int i = 0; i<3; i++) {
                    XMLElement *strEle = pDoc->NewElement();
                    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</string>stringTextarray> >icon> plist>

二:解析xml

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

原文地址:https://www.jb51.cc/cocos2dx/340370.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐