我第一次使用pugixml而我无法将文件正确加载到内存中。
我的XML测试文档:
<?xml version="1.0"?>
<node>
</node>
我使用以下代码加载文档并获取子文件:
pugi::xml_document doc;
pugi::xml_parse_result result = doc.load("test.xml");
if (result)
{
Log(L"XML [%s] parsed without errors", L"test.xml");
pugi::xml_node node = doc.child(L"node");
if (node)
Log(L"it works");
else
Log(L"it does not work");
doc.save_file(L"test.xml");
}
else
{
Log(L"XML [%s] parsed with errors", L"test.xml");
Log(L"XML Error description: %s", result.description());
Log(L"XML Error offset: %d", result.offset);
}
输出:
XML [test.xml] parsed without errors
it does not work
执行后的XML文件:
<?xml version="1.0"?>
(当使用doc.save_file函数数据丢失时)
编译器:MS Visual Studio 2010 Ultimate
语言:C ++
构建:UNICODE / x64
答案 0 :(得分:1)
而不是打开文件,您的代码正在解析字符串“test.xml”。
使用doc.load_file("test.xml")
。
doc.load("test.xml")
没有返回任何错误,因为pugixml不会拒绝根级PCDATA(但也不会解析它)。这不是一个理想的决定,但目前尚不清楚是否存在明显更好的替代方案 - 解析文档片段和解析不生成任何节点的有效片段(即"<!--comment-->"
没有pugi::parse_comments
)会有复杂性