2012-03-23 4 views
3

Я хотел сериализовать объекты с помощью XML, поэтому я получил TinyXML. Однако я пошел с новым TinyXML2. Проблема в том, что я нигде не могу найти учебник, поэтому я просто прочитал документацию. Однако, похоже, я застрял в добавлении элемента в документ.TinyXML2/C++ - Вставить элемент

Может ли кто-нибудь сказать мне, что не так с моим кодом?

Вот мои demo.xml содержимое файла:

<?xml version="1.0" ?> 
<Hello>World</Hello> 

вот мой main() метод:

#include "tinyxml2/tinyxml2.h" 
using namespace tinyxml2; 

int main (int argc, char * const argv[]) 
{ 
    XMLDocument doc; 
    if (doc.LoadFile("demo.xml") == XML_SUCCESS) 
    { 
     XMLNode *node = doc.NewElement("foo"); 
     doc.InsertEndChild(node); 
     doc.SaveFile("demo2.xml"); 
    } 
} 

и, наконец, вот demo2.xml файл:

<?xml version="1.0" ?> 
<Hello>World</Hello> 

<foo/> 

Foo должен выглядеть следующим образом: <foo></foo>

Но это почему-то не так. Может ли кто-нибудь объяснить, почему?

+0

что вы хотите, чтобы ваш файл XML, чтобы выглядеть успешной записи? – user1055604

+0

@ user1055604 Я отредактировал Q, спасибо, что указал на это! – rcplusplus

+3

Вы знаете, что '' и '' эквивалентен? Я бы догадался, как только вы добавите текст в свой узел, tinyxml изменится на более поздний. – mkaes

ответ

4

На самом деле, это не должно выглядеть так. Вы не помещаете никаких данных «между» вашими тегами <foo>...</foo>. Как таковой <foo/> (обратите внимание на косую черту) - это правильное представление того, что у вас есть.

4

между ними, если вы можете изменить код следующим образом:

XMLElement *node = doc.NewElement("foo"); 
XMLText *text = doc.NewText("Another Hello!");  
node->LinkEndChild(text);  
doc.LinkEndChild(node); 

doc.SaveFile("demo2.xml"); 
Смежные вопросы