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