MSXML2.SAXXMLReader.6.0不解析?

时间:2009-05-20 14:59:41

标签: .net xml sax

我正在使用.net框架的XmlTextWriter从C#写出一些xml。这没问题。我写的一些字符串包含字符值5(注意我并不是指字符'5',但我的意思是ascii值为5)。

现在,我从xml规范中了解到这个字符在xml中是非法的。但是,我不在乎它是否非法,我想在我的xml(不符合)文档中。这样我就可以编写一个可能包含一些二进制数据的字符串。

好的,所以System.Xml.XmlTextWriter会将这些非法的xml字符写好,并将它在xml中编码为"&#5x;"。但是,我想通过使用MSXML2.SAXXMLReader.6.0在C ++应用程序中阅读它们。当遇到其中一个字符时,此解析器会引发fatalError。

我尝试修改解析器的一些属性以使其工作。我的理解是IE在内部使用了这个解析器,我可以用IE加载非法的xml。那么,当我不能的时候,IE如何设法解析它。

我错过了什么吗? IE是否使用不同的解析器。有没有办法让MSXML2.SAXXMLReader.6.0解析器工作?我是否需要使用不同的解析器(如果是这样,你能推荐一个有源代码可用的解析器吗?如果不能做我想要的话我可以解决它吗?)

我可以在.Net解析器上设置一个属性,以允许解析这些非法字符。我想我正在寻找一个可以在C ++中使用SAX解析器的等价物。 http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.checkcharacters.aspx

非常感谢,
   斯科特

注意我不相信CDATA部分会允许对此字符进行编码。看这里: http://msdn.microsoft.com/en-us/library/ms256076(VS.85).aspx
即使它确实如此。我不想使用CDATA部分,我想在属性值中使用该字符。我也意识到我可以对它进行base64编码,但我也不想这样做......我想破法,我希望能够解析非法的xml。

1 个答案:

答案 0 :(得分:2)

不,不可能在XML中解析控制字符。

确切地说,这会使您的文档不是XML文档。

这是规范的硬连线部分。如果要解析非法字符,则必须编写自己的NON-COMPLIANT解析器。

按照:

http://lists.xml.org/archives/xml-dev/199804/msg00502.html