You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML 1.1中CDATA解析失败原因:Java SAX解析器报错探究

XML 1.1中CDATA段以']'结尾导致Java SAX解析报错的问题

问题现象

当XML版本指定为1.1,且CDATA段内容以单个']'结尾时,Java SAX解析器会抛出文档结构错误,但相同内容在XML 1.0中可正常解析。

示例XML(XML 1.1)

<?xml version="1.1" encoding="UTF-8"?>
<book>
  <description><![CDATA[Release year [1997]]]></description>
</book>

报错信息

XML document structures must start and end within the same entity.

XML 1.0下的正常情况

相同内容在XML 1.0中可被解析器正常处理:

<?xml version="1.0" encoding="UTF-8"?>
<book>
  <description><![CDATA[Release year [1997]]]></description>
</book>

原因分析

根据XML规范,无论1.0还是1.1版本,CDATA段的唯一结束标记都是]]>,仅该序列被禁止出现在CDATA内容中。但OpenJDK 17.0.7自带的SAX解析器(基于Xerces)在XML 1.1模式下的解析逻辑存在差异:

  • 解析器在XML 1.1模式下扫描CDATA内容时,遇到']'会额外检查后续字符;若CDATA内容以单个']'结尾,解析器会误将其视为不完整的结束标记前缀,进而判定文档结构不合法。
  • 而在XML 1.0模式下,解析器对CDATA的扫描逻辑更为宽松,仅当完整的]]>序列出现时才判定为CDATA结束,因此单个结尾的']'不会触发错误。

内容的提问来源于stack exchange,提问作者RajV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:21:30