首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TinyXML2/C++ -插入元素

TinyXML2/C++ -插入元素
EN

Stack Overflow用户
提问于 2012-03-23 22:50:03
回答 3查看 10.1K关注 0票数 3

我想用XML来序列化对象,所以我得到了TinyXML。然而,我选择了较新的TinyXML2。问题是,我在任何地方都找不到教程,所以我只是阅读了文档。但是,我似乎很难在文档中添加元素。

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

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

代码语言:javascript
运行
复制
<?xml version="1.0" ?>
<Hello>World</Hello>

下面是我的main()方法:

代码语言:javascript
运行
复制
#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文件:

代码语言:javascript
运行
复制
<?xml version="1.0" ?>
<Hello>World</Hello>

<foo/>

Foo应该是这样的:<foo></foo>

但由于某种原因,它并不是这样。有谁能解释一下原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-23 23:05:07

事实上,它不应该看起来是这样的。您不需要将任何数据“放在”<foo>...</foo>标记之间。因此,<foo/> (注意斜杠)是您所拥有的内容的正确表示。

票数 4
EN

Stack Overflow用户

发布于 2013-06-19 09:39:22

在if之间,您可以修改代码,如下所示:

代码语言:javascript
运行
复制
XMLElement *node = doc.NewElement("foo");
XMLText *text = doc.NewText("Another Hello!");    
node->LinkEndChild(text);     
doc.LinkEndChild(node);

doc.SaveFile("demo2.xml");
票数 4
EN

Stack Overflow用户

发布于 2020-12-29 14:23:09

您可以使用SetText()函数添加空白内容,以达到所需的效果

代码语言:javascript
运行
复制
XMLNode *node = doc.NewElement("foo");
node->SetText("");
doc.InsertEndChild(node);
doc.SaveFile("demo2.xml");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9841300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档