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

前端之家收集整理的这篇文章主要介绍了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());

猜你在找的Cocos2d-x相关文章