首先包含头文件 该头文件cocos已自带
#include"tinyxml2/tinyxml2.h"
usingnamespacetinyxml2;
//data.xml文件内容
<Chapters>
<Chapter>
<name>Misty Vale</name>
<Number>1</Number>
<Unlocked>1</Unlocked>
</Chapter>
<name>Bamboo Vale</name>
<Number>2</Number>
<Unlocked>0</Unlocked>
<name>Wind Vale</name>
<Number>3</Number>
<name>Kunlun Mountain</name>
<Number>4</Number>
<name>Happy Vale</name>
<Number>5</Number>
</Chapters>
具体代码:
fileUtils* f = fileUtils::getInstance();
//获得可写的具体文件路径
std::string path = f -> getWritablePath();
std::string xmlPath = path + std::string("data.xml");
log("%s",xmlPath.c_str());
XMLdocument* mydocument = new XMLdocument();
XMLError errorID = mydocument -> Loadfile(xmlPath.c_str());
//判断是否解析错误
if (errorID != 0) {
log("Parse Error!");
delete mydocument;
return;
}
//获取根节点
XMLElement* RootElement=mydocument->RootElement();
cclOG("RoorKey=%s",RootElement->Value());//获取建
log("RootValue=%s",RootElement->GetText());//获取值
XMLElement *chapterElement = RootElement->FirstChildElement();//RootElement下的第一个
log("1chapterElement=%s",chapterElement->Value());
获取值
XMLElement *element = chapterElement->NextSiblingElement();//chapterElement->NextSiblingElement()如果取不到节点了,则为空,可以搭配while语句遍历所有节点
log("2chapterElement=%s",element->Value());//RootElement下的第二个
XMLElement *nameElement = element->FirstChildElement();//element下的第一个
log("nameElement:%s",nameElement->Value());
log("nameElementValue:%s",nameElement->GetText());
XMLElement *numElement = nameElement->NextSiblingElement();//element下的第二个,即nameElement的下一个
log("num%s",numElement->Value());//获取键
log("numValue%s",numElement->GetText());//这里获取值
//修改节点
XMLNode *oldNode = numElement->FirstChild();//注意分析FirstChild和FirstChildElement的区别
log("oldNodeValue:%s",oldNode->Value());
oldNode->SetValue("xiugaileeeeee"); //注意这里要用父类的节点调用,否则会不起作用
mydocument->Savefile(xmlPath.c_str());//这个将修改保存到文件
//添加节点,需要使用父类节点调用,若使用同等级的子节点,则会作为起子节点添加
XMLElement* broadcast_PID = mydocument->NewElement("AGE");//<AGE></AGE>
XMLText *text1 =mydocument->NewText("3333");
broadcast_PID->SetAttribute("info","the pID");
broadcast_PID->linkEndChild(text1);//<AGE info=the pID>3333</AGE>
chapterElement->linkEndChild(broadcast_PID);//最后把这个节点又加上了
mydocument->Savefile(xmlPath.c_str());
//移除节点
XMLElement* nameNode=chapterElement->FirstChildElement();
chapterElement->DeleteChild(nameNode);
delete mydocument;
总结以上是内存溢出为你收集整理的cocos2dx读写XML全部内容,希望文章能够帮你解决cocos2dx读写XML所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)