也许是rapidxml中的bug - 但我不确定如何修复

时间:2012-06-12 07:42:45

标签: c++ xml rapidxml

我注意到rapidxml将非法<<element/>解析为名为<element的元素,而不是产生错误。

我认为问题是lookup_node_name的定义。评论是

//  Node name (anything but space \n \r \t / > ? \0)

我对w3.org specification的理解是,名称可以包含字母,数字和其他一些字符。

我不确定什么是正确的修复方法。有什么建议吗?

1 个答案:

答案 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联系开发人员,这可能是最好的方法......