我注意到rapidxml將非法<<element/>
解析爲名爲<element
的元素,而不是產生錯誤。rapidxml中可能有bug - 但我不知道如何修復
我覺得問題是lookup_node_name
的定義。註釋是
// Node name (anything but space \n \r \t/> ? \0)
我從w3.org specification明白的是,名稱可以有字母,數字和其他一些字符。
我不確定什麼是正確的修復。有什麼建議麼?
我注意到rapidxml將非法<<element/>
解析爲名爲<element
的元素,而不是產生錯誤。rapidxml中可能有bug - 但我不知道如何修復
我覺得問題是lookup_node_name
的定義。註釋是
// Node name (anything but space \n \r \t/> ? \0)
我從w3.org specification明白的是,名稱可以有字母,數字和其他一些字符。
我不確定什麼是正確的修復。有什麼建議麼?
從查看rapidxml代碼,lookup_node_name
是有效名稱字符的查找表,正如註釋所述,僅禁止特定的幾個字符。
我想嘗試通過將ASCII字符0x3C的查找條目從0設置爲1來將'<添加到禁用字符列表中。即,在與字符0x30..0x3f有關的行上,將其更改爲.. 。
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
...
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, // 3
這樣:
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, // 3
這可能爲你工作,但我還沒有嘗試過。我看到你已經試圖通過sourceforge與開發人員聯繫,這可能是最好的方法...
它將適用於這個特定的輸入,不錯,但我仍然喜歡開發者的迴應;特別是如果我想提交修復程序。 – ModdyFire
沒有發佈代碼,沒有什麼人可以爲你做。 – jxh