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

実際、そのように見えるべきではありません。タグの「間に」データを入れないでください<foo>...</foo>。そのため<foo/>(スラッシュに注意)は、あなたが持っているものの正しい表現です。

于 2012-03-23T15:05:07.167 に答える
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 に答える
2

SetText()関数を使用して空白のコンテンツを追加し、目的の効果を実現できます。

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