2012-03-23 100 views
3

我想用XML序列化对象,所以我得到了TinyXML。不过,我使用了更新的TinyXML2。问题是,我无法在任何地方找到教程,所以我只是阅读文档。但是,我似乎坚持添加一个元素到文档中。TinyXML2/C++ - 插入元素

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

这是我的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>

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

+0

你怎么想你的XML文件看起来像成功的写? – user1055604 2012-03-23 14:53:02

+0

@ user1055604我编辑了Q,谢谢指出! – rcplusplus 2012-03-23 14:57:52

+3

你知道''和''是否相等?我猜想,只要向节点添加一些文本,tinyxml就会更改为稍后。 – mkaes 2012-03-23 15:05:30

回答

4

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

4

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

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

doc.SaveFile("demo2.xml");