2012-10-03 138 views
0

我第一次使用pugixml,我無法將文件正確加載到內存中。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終極

語言:C++

體形:UNICODE/X64

回答

1

代替打開文件中的代碼是解析字符串「test.xml」。 使用doc.load_file("test.xml")

doc.load("test.xml")沒有返回任何錯誤,因爲pugixml不拒絕根級別的PCDATA(但也不解析它)。這不是一個理想的決定,但不清楚是否存在更好的替代方案 - 解析文檔片段和解析不生成任何節點的有效片段(即"<!--comment-->"而不是pugi::parse_comments)會有複雜性。