1

在调用 second() 之后的这个简单代码中,1.xml 只有一个节点“1”。为什么 pugi 替换节点,我应该怎么做才能正确修改?

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();
}
4

1 回答 1

1

您应该检查load_file.

这是这里发生的事情:

  1. XML 标记名称不能以数字开头。这是由 XML 标准定义的。
  2. pugixml 在加载文档时执行此检查 - 所以load_file()失败,产生一个空文档
  3. pugixml在追加节点或保存文档时执行此检查,因此可能保存无效文档
于 2014-05-11T16:18:31.503 回答