我注意到rapidxml将非法<<element/>
解析为名为<element
的元素,而不是产生错误。
我认为问题是lookup_node_name
的定义。评论是
// Node name (anything but space \n \r \t / > ? \0)
我对w3.org specification的理解是,名称可以包含字母,数字和其他一些字符。
我不确定什么是正确的修复方法。有什么建议吗?
答案 0 :(得分:1)
通过查看rapidxml代码,lookup_node_name
是一个有效名称字符的查找表,正如评论所说,只有少数几个被禁止。
我会尝试添加'&lt;通过将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联系开发人员,这可能是最好的方法......