2013-04-20 5 views
0

Мой test.xml как это:как писать TINYXML2 данных на IOS

<?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?

ответ

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