代码之家  ›  专栏  ›  技术社区  ›  Michael S.

Delphi,IXMLDOMDocument2,由于字符无效,加载失败

  •  3
  • Michael S.  · 技术社区  · 14 年前

    将XML加载到IXMLDOMDocument2时收到“在文本内容中发现无效字符”错误。字符是1B(十六进制),出现在CDATA节中。微软的XML浏览器(IE)可以很好地加载文件。XML看起来像。。。

    <data><child><![CDATA[-- ]]></child></data>

    注意:我试图粘贴XML,但特殊字符被删除。在CDATA部分,我的XML文件中有一个1B字符跟在“-”后面。

    谢谢, 迈克尔

    2 回复  |  直到 14 年前
        1
  •  5
  •   bobince    14 年前

    XML中不允许使用字符U+001B, along with most of the rest

    在XML 1.1中 只有 ,除U+0000外,所有字符都可以作为类似的字符引用包含在文档中 &#x1B; . (显然,这在CDATA节中没有用处,但是CDATA节实际上并没有多大用处。)

    如果需要在XML中包含任意控制字符,通常需要使用特定于应用程序的编码方案,如base64。

        2
  •  0
  •   Wim ten Brink    14 年前

    &#x0; 污染XML的字符。为了解决这个问题,我只需先在WideString变量中加载XML,然后在将XML添加到IXMLDocument接口对象之前使用StringReplace()替换非法文本。