3

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

但它不是出于某种原因。谁能解释为什么?

4

3 回答 3

4

在 if 之间,您可以按如下方式修改您的代码:

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

doc.SaveFile("demo2.xml");
于 2013-06-19T01:39:22.027 回答
4

事实上,它不应该是这样的。您不会在<foo>...</foo>标签“之间”放置任何数据。因此<foo/>(注意斜线)是您所拥有的正确表示。

于 2012-03-23T15:05:07.167 回答
2

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

XMLNode *node = doc.NewElement("foo");
node->SetText("");
doc.InsertEndChild(node);
doc.SaveFile("demo2.xml");
于 2020-12-29T06:23:09.357 回答