我想用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>
但它不是出于某种原因。任何人都可以解释原因吗?
答案 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");