使用Delphi2009和IXMLDOMDocument2
在将XML加载到IXMLDOMDocument2中时,我收到“在文本内容中发现无效字符”错误。字符是1B (十六进制),出现在CDATA节中。Microsoft的XML查看器(IE)可以很好地加载文件。XML看起来像...
<data><child><![CDATA[-- ]]></child></data>
注意:我尝试粘贴XML,但是删除了特殊字符。在我的XML文件中,CDATA部分的"--“后面有1B字符。
我尝试在XML和其他编码的开头添加内容,但没有一种方法对我有效。是否可以执行任何操作来加载此文件?
谢谢,迈克尔
发布于 2010-10-29 00:44:19
在ASCII控制字符的XML和along with most of the rest中不允许使用字符U+001B。它不是格式良好的,如果Microsoft的XML查看器没有抱怨,它就不会根据XML的规则解析它。咔哒!
仅在XML1.1中,除了U+0000之外的所有内容都可以像一样作为字符引用包含在文档中。(显然,这在CDATA节中没有什么用处,但是CDATA节也不是很有用。)
如果需要在XML中包含任意控制字符,则通常需要使用特定于应用程序的编码方案,如base64。
发布于 2010-10-29 18:30:57
从一些web服务,我需要从一些应用程序调用,我得到了很多污染XML的�字符。为了解决这个问题,我只需先将XML加载到WideString变量中,然后使用StringReplace()替换非法文本,然后再将XML添加到IXMLDocument接口对象中。
很脏,我知道。但是,如果您仍然需要处理包含非法字符的XML文件,这只是最简单的选择。
https://stackoverflow.com/questions/4045089
复制相似问题