在调用second()之后的这个简单代码中,1.xml只有一个节点"1"。为什么pugi替换了node,我应该怎么做才能正确修改?
void first()
{
pugi::xml_document document;
pugi::xml_parse_result result = document.load_file("C:\1.xml", parse_full);
pugi::xml_node node = document.append_child("0");
node.append_attribute("message") = "something";
document.save_file("C:\1.xml");
}
void second()
{
pugi::xml_document document;
pugi::xml_parse_result result = document.load_file("C:\1.xml", parse_full);
pugi::xml_node node = document.append_child("1");
node.append_attribute("message") = "something else";
document.save_file("C:\1.xml");
}
void test()
{
first();
second();
}
您应该检查load_file
的结果
事情是这样的:
- XML标记名不能以数字开头。这是由XML标准定义的。
- pugixml在加载文档时执行此检查—因此
load_file()
失败,生成空文档 - pugixml 在附加节点或保存文档时不执行此检查,因此有可能保存无效文档