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

C++ TinyXML2/C++;-插入一个元素,c++,xml,tinyxml2,C++,Xml,Tinyxml2,我想用XML序列化对象,所以我得到了TinyXML。不过我还是选择了新的TinyXML2。问题是,我在任何地方都找不到教程,所以我只是阅读了文档。但是,我似乎一直在为文档添加元素 有人能告诉我我的代码有什么问题吗 下面是我的demo.xml文件内容: <?xml version="1.0" ?> <Hello>World</Hello> 最后,这里是demo2.xml文件: <?xml version="1.0" ?> <Hello>

我想用XML序列化对象,所以我得到了TinyXML。不过我还是选择了新的TinyXML2。问题是,我在任何地方都找不到教程,所以我只是阅读了文档。但是,我似乎一直在为文档添加元素

有人能告诉我我的代码有什么问题吗

下面是我的
demo.xml
文件内容:

<?xml version="1.0" ?>
<Hello>World</Hello>
最后,这里是
demo2.xml
文件:

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

<foo/>

世界
Foo应该是这样的:


但出于某种原因,它没有。有人能解释为什么吗?

事实上,它不应该是这样的。您不会将任何数据“放在”您的
标记之间。因此,
(请注意斜线)是您所拥有内容的正确表示

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

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

doc.SaveFile("demo2.xml");
您可以使用SetText()函数添加空白内容,以便达到所需的效果

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

您希望您的xml文件在成功写入时是什么样子?@user1055604我编辑了Q,感谢您指出这一点!你知道
是等价的吗?我猜只要你向你的节点添加一些文本,tinyxml就会变为更晚。哦。。。我想我应该复习一下XML语法。。。
XMLNode *node = doc.NewElement("foo");
node->SetText("");
doc.InsertEndChild(node);
doc.SaveFile("demo2.xml");