0

I am using pugixml for the first time and I am not able to correctly load a file into memory.

My XML test document:

<?xml version="1.0"?>
<node>
</node>

I use following code to load the document and get the child:

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

Output:

XML [test.xml] parsed without errors

it does not work

XML file after execution:

<?xml version="1.0"?>

(When using doc.save_file function data are lost)

Compiler: MS Visual Studio 2010 Ultimate

Language: C++

Build: UNICODE/x64

4

1 に答える 1

1

ファイルを開く代わりに、コードは文字列「test.xml」を解析しています。を使用しdoc.load_file("test.xml")ます。

doc.load("test.xml")pugixmlはルートレベルのPCDATAを拒否しないため(ただし、解析もしないため)、エラーは返されませんでした。これは理想的な決定ではありませんが、大幅に優れた代替案が存在するかどうかは明らかではありません。ドキュメントフラグメントの解析と、ノードを生成しない(つまり"<!--comment-->"、なしのpugi::parse_comments)有効なフラグメントの解析には複雑な問題があります。

于 2012-10-04T05:39:33.090 に答える