TinyXML2 / C ++ - 插入一个元素

时间:2012-03-23 14:50:03

标签: c++ xml tinyxml2

我想用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></foo>

但它不是出于某种原因。任何人都可以解释原因吗?

3 个答案:

答案 0 :(得分:4)

事实上,它看起来应该不那样。您不会在<foo>...</foo>标记之间插入任何数据。因此<foo/>(注意斜线)是你所拥有的正确表示。

答案 1 :(得分:4)

之间,你可以修改你的代码如下:

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

doc.SaveFile("demo2.xml");

答案 2 :(得分:2)

可以使用SetText()函数添加空白内容,从而达到想要的效果

XMLNode *node = doc.NewElement("foo");
node->SetText("");
doc.InsertEndChild(node);
doc.SaveFile("demo2.xml");