【发布时间】:2014-09-02 14:37:16
【问题描述】:
我不被允许创建新标签“tinyxml2”,这就是我使用标签“tinyxml”的原因,但我使用的是“tinyxml2”!
我正在尝试将子树元素插入现有 XML 文件。我的问题是,在运行程序并检查 XML 文件后,文档中根本不存在子树。在原始代码中,我还在加载和保存文件时检查错误,因此这些功能没有问题,它们工作正常。我尝试了几种不同的方法,并且还通过使用 UserList.NewElement(*name*)-function 添加了单个元素也可以正常工作。
现在我想从一个文本变量中插入一个完整的子树...
我的最新方法是这样的(简化后不检查LoadFile 和SaveFile):
tinyxml2::XMLDocument UserList;
UserList.LoadFile(*Path*);
const char* XMLText = "<user name=\"test-user\" gender=\"male\"><ability description=\"I_can_do_magic\" /></user>";
tinyxml2::XMLDocument TestParse;
TestParse.Parse(XMLText);
tinyxml2::XMLElement* myNewUser = TestParse.RootElement();
UserList.FirstChildElement( "magicians" )->InsertEndChild(myNewUser);
UserList.SaveFile(*Path*);
顺便说一句...
当我尝试使用tinyxml2::XMLDocument UserList 解析我的XMLText 时,运行程序后保存的XML 文件将为空。这意味着在尝试执行此操作时,既不会保存原始 XML 文档内容,也不会保存新解析的子树。这个事实让我使用了第二个tinyxml2::XMLDocument TestParse。现在保存的 XML 文件包含它的原始内容,但是解析的子树仍然丢失......非常感谢您的任何解决方案/帮助/建议。
【问题讨论】:
标签: c++ xml insert tinyxml subtree