Мой 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?
В 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)
,
Других решений пока нет …