XML中的CDATA是什么作用 CDATA使用方法详解

CDATA用于标记XML中的纯文本数据,使解析器原样保留所有字符;其限制是不能包含“]]>”且不可嵌套,否则会导致解析错误或结构损坏。

CDATA 是 XML 中用于标记“纯文本数据”的特殊语法,它的核心作用是告诉解析器:这一段内容不用按 XML 规则去解析,所有字符——包括 、&、换行、空格——都原样保留。

为什么需要 CDATA

XML 解析器默认把

  • 例如:Hello & World 直接写进 XML 元素体,解析器会尝试找匹配的标签和实体,导致格式错误
  • 手动转义虽然可行(zuojiankuohaophpcnyoujiankuohaophpcn&),但可读性差、易出错、维护成本高
  • CDATA 提供了一种干净、直观的替代方案,尤其适合大段混合内容

CDATA 的基本写法

语法固定,由三部分组成:

  • 开始标记:(注意是 9 个字符,不能多也不能少)
  • 中间内容:任意文本,支持换行、缩进、特殊符号
  • 结束标记:]]>(必须紧挨着,不能有空格或换行)

示例:


   0) {
      document.write("

Hello

"); } ]]>

这段 JS 代码会被完整保留,不会触发任何解析行为。

使用时必须注意的限制

CDATA 不是万能保险箱,有两条硬性约束:

  • 不能包含 ]]> 字符串——这是结束标记,一旦出现就会提前截断内容,导致后续 XML 结构损坏
  • 不允许嵌套——一个 CDATA 块内部不能再写另一个

如果原始文本里真有 ]]>,需人工拆分,比如用字符串拼接方式绕过: + "(需在应用层处理)。

典型适用场景

适合嵌入那些本身含大量 XML 敏感字符、又不想破坏结构的文本:

  • JavaScript 或 CSS 代码块
  • HTML 片段(如邮件模板、富文本配置)
  • 日志输出、SQL 查询语句、正则表达式
  • 数学公式、伪代码、API 响应示例

它不是用来替代良好设计的 XML 结构,而是为“不得不放原始文本”提供安全通道。