替换而不是添加xml节点



在调用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的结果

事情是这样的:

  1. XML标记名不能以数字开头。这是由XML标准定义的。
  2. pugixml在加载文档时执行此检查—因此load_file()失败,生成空文档
  3. pugixml 在附加节点或保存文档时不执行此检查,因此有可能保存无效文档

相关内容

  • 没有找到相关文章

最新更新