我正在使用 .net 框架的 XmlTextWriter 从 C# 中写出一些 xml。这工作正常。我写出的一些字符串包含字符值 5(注意我不是指字符 '5',而是指 ascii 值 5)。
现在,我从 xml 规范中了解到这个字符在 xml 中是非法的。但是,我不在乎它是否非法,我希望它在我的 xml(不合格)文档中。这样我就可以将可能包含一些二进制数据的字符串写入文档。
好的,所以 System.Xml.XmlTextWriter 会把这些非法的 xml 字符写好,并在 xml 中将其编码为"x;"
. 但是,我想通过使用 MSXML2.SAXXMLReader.6.0 在 C++ 应用程序中阅读它们。此解析器在遇到这些字符之一时会引发 fatalError。
我尝试修改解析器的一些属性以使其工作。我的理解是 IE 在内部使用了这个解析器,我可以用 IE 加载非法的 xml ok。那么,当我不能解析它时,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。