如何在IOS上写入数据TINYXML2

时间:2013-04-20 10:16:24

标签: c++ xml tinyxml

我的test.xml如下:

<?xml version="1.0"?>
<!DOCTYPE PLAY SYSTEM "play.dtd">            
<data>
    <CurrentLevel>5</CurrentLevel>
    <BestScoreLV1>1</BestScoreLV1>
    <BestScoreLV2>2</BestScoreLV2>
</data>
<dict/>

我的代码:

std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("text.xml");
tinyxml2::XMLDocument doc;

doc.LoadFile(fullPath.c_str());

tinyxml2::XMLElement* ele =  doc.FirstChildElement("data")->FirstChildElement("BestScoreLV2")->ToElement();
ele->SetAttribute("value", 10);
doc.SaveFile(fullPath.c_str());

const char* title1 =  doc.FirstChildElement("data")->FirstChildElement("BestScoreLV2")->GetText();
int level1  = atoi(title1);
CCLOG("result is: %d",level1);

但是当输出也是2时BestScoreLV2的值。如何更改数据并将数据写入XML?

1 个答案:

答案 0 :(得分:0)

在TinyXML2中,文本由XMLText类表示,该类是XMLNode类的子类。 XMLNode有方法Value()SetValue(),它们对不同的XML节点有不同的含义。 对于文本节点Value()读取节点的文本,SetValue()写入它。 所以你需要这样的代码:

tinyxml2::XMLNode* value = doc.FirstChildElement("data")->
    FirstChildElement("BestScoreLV2")->FirstChild();
value->SetValue("10");

BestScoreLV2元素的第一个孩子是XMLText,其值为2。您可以致电10将此值更改为SetValue(10)