как записать данные TINYXML2 на IOS

Мой 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?


person tuan vuminh    schedule 20.04.2013    source источник


Ответы (1)


В 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).

person Vasily Biryukov    schedule 20.04.2013