0

我的 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);

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

4

1 回答 1

0

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

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

element的第一个子BestScoreLV2元素是XMLTextvalue 210您可以通过调用将此值更改为SetValue(10)

于 2013-04-20T11:55:59.937 回答