1

我搜索了一个答案,但找不到。

我有一个由服务器生成的长 xml。我想使用 xslt 显示一些节点。

问题是:当我在浏览器上打开 xml 时,我得到:XML 解析失败,XML 解析失败:语法错误,编码中的非法字节序列

错误在一个节点内的一个 cdata 内,<![CDATA[]]>

错误是:,和数百个类似的字符。

据我了解,如果它在 cdata 中它应该忽略或逃避它,这不应该发生。

xml 编码是 utf8 。

感谢您的帮助。

4

1 回答 1

5

编码

你说“xml编码是utf8”。你的解析器告诉你你错了。它正在寻找一个在 UTF-8 中不可能出现的字节序列;根据我的经验,当 ISO 8859-1(ISO Latin 1)数据被错误地标记为 UTF-8 时,经常会发生这种情况。

如果您在十六进制转储或类似工具中检查了有问题的数据并确认它是合法的 UTF-8,那么您似乎有一个错误需要向您的供应商报告。如果你没有,那么这里会说解析器可能是正确的,并且你的数据不太可能是 UTF-8。找出它是什么,并正确声明它,或者修复服务器的配置以使其生成 UTF-8 数据流,或者使用字符编码转换实用程序将服务器的输出转换为 UTF-8。

CDATA 部分

CDATA 部分出现在被解析为 XML 的字符序列中;他们声明其内容是字符数据而不是 XML 分隔符。CDATA 部分没有也不能声明其内容是任意位、字节或八位字节序列;当字符序列被识别为 CDATA 部分时,数据流编码中的位已经转换为字符;现在说“不要将这些八位字节解析为字符!”为时已晚。

于 2013-02-05T17:17:19.060 回答