2012-05-15 76 views
-1

我使用boost :: property_tree對象解析XML是這樣的:read_xml()拋出異常,由於缺少雙引號

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <node attr="attr_str"/> 
</root> 

當我打電話read_xml()來解析這個內容,它工作得很好。但是,如果我刪除周圍的ATTR那些雙引號屬性是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <node attr=attr_str/> 
</root> 

它扔xml_parse_error例外。

是否可以設置任何標誌來忽略雙引號的檢查?

+1

該文檔沒有圍繞'attr'的雙引號,而是無效的XML。爲什麼期望(並希望)XML解析器解析無效的XML? – Thanatos

+0

我知道你的觀點。但是我的項目已經有一些xml文件,這些文件已經混亂了,所以我試圖讓我的解析器與它們兼容。 – naive231

回答

0

XML的哲學非常重要的一部分就是獲取內容的責任取決於生產者而不是消費者。這是因爲生成正確的XML要比修復不好的XML容易得多,成本也更低;閱讀XML的人數比編寫XML的人多得多。如果你發現自己以XML(或者更確切地說不是XML)產生的,而這個人對這種質量態度一無所知,那麼你就會遇到一個棘手的問題。