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==
导入头文件: 一:创建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()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |