我注意到 rapidxml 将非法解析<<element/>
为名为 的元素<element
,而不是产生错误。
我认为问题在于lookup_node_name
. 评论是
// Node name (anything but space \n \r \t / > ? \0)
我从w3.org 规范中了解到,名称可以包含字母、数字和其他一些字符。
我不确定什么是正确的解决方法。有什么建议么?
从 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 联系开发人员,这可能是最好的方法...