C++ 我可以将对象的子对象设置为PugiXML中单独定义的对象吗?
我想用一个XML文件配置一个设备,我想我可以先用我需要的值创建单个C++ 我可以将对象的子对象设置为PugiXML中单独定义的对象吗?,c++,xml,pugixml,C++,Xml,Pugixml,我想用一个XML文件配置一个设备,我想我可以先用我需要的值创建单个pugi::XML_节点s,然后再将它们创建为文档或某个父节点的子节点。然而,我似乎做错了什么 有效的示例: #include "pugixml.hpp" int main(){ pugi::xml_document xml; pugi::xml_node configRecord = xml.append_child("configrecord"); pugi::
pugi::XML_节点
s,然后再将它们创建为文档或某个父节点的子节点。然而,我似乎做错了什么
有效的示例:
#include "pugixml.hpp"
int main(){
pugi::xml_document xml;
pugi::xml_node configRecord = xml.append_child("configrecord");
pugi::xml_node configGroup = configRecord.append_child("configgroup");
configGroup.append_attribute("name") = "ftp server";
}
这是因为我首先创建父文档,然后通过添加子文档开始分支。我想我可以先创建节点对象,将它们存储到一个数组中,然后解析该数组以将它们添加到文档中。但这不起作用
#include "pugixml.hpp"
int main(){
pugi::xml_node myNode;
myNode.set_name("value");
myNode.append_child(pugi::node_pcdata).set_value("enable");
pugi::xml_document docu;
docu.set_name("document");
docu.child(myNode); // <- error here, cannot add child to document
}
#包括“pugixml.hpp”
int main(){
pugi::xml_node myNode;
myNode.set_名称(“值”);
myNode.append_child(pugi::node_pcdata).set_值(“enable”);
pugi::xml_文档docu;
文件集名称(“文件”);
docu.child(myNode);//声明pugi::xml_node
是一个非所有权指针,指向存储在pugi::xml_文档中的实际节点数据
对象:
xml\u节点
是文档节点的句柄;它可以指向文档中的任何节点
文档,包括文档节点本身
所有类型节点的接口,可查询实际节点类型
通过xml\u节点::type()
方法。请注意xml\u节点
只是一个句柄
到实际节点,而不是节点本身
没有文档树,节点和属性就不存在,因此
如果不将它们添加到某个文档中,则无法创建它们
在我看来,当您尝试操作myNode
时,代码似乎不会抛出错误,因为默认构造的“null”节点会默默地使用它们上的操作,以使链接更容易:
所有操作都是在空节点上定义的;通常是
不执行任何操作并返回空节点/属性或空字符串
因此[…]这对于链接调用非常有用
你是对的,我在浏览有关这个问题的文档时,不知何故忽略了这一点。看起来我采取的方法确实需要改进。