TinyXML2 / C ++ - Вставить элемент - PullRequest
3 голосов
/ 23 марта 2012

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

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

Вот мое 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>

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

Ответы [ 2 ]

4 голосов
/ 19 июня 2013

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

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

doc.SaveFile("demo2.xml");
4 голосов
/ 23 марта 2012

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

...