CDATA是XML中用于包裹纯文本的免解析区域,语法为,可避免对、不支持嵌套,适用于嵌入HTML/JS/日志等含特殊字符的内容。

CDATA 是 XML 中用来包裹“纯文本”的特殊标记,作用是告诉解析器:这一段内容别解析,原样保留。 它不是标签,也不是元素,而是一种“免解析区域”——里面写什么符号(比如 、&、")都不用转义,也不会被当成 XML 语法处理。
CDATA 的基本写法
语法非常固定,必须严格按格式书写:
- 开头是 (注意:左方括号前是感叹号,不能有空格)
- 中间放你要保留的原始文本,比如 HTML 片段、JS 代码、含尖括号的日志等
- 结尾必须是 ]]>(连续三个字符,不能换行、不能加空格)
例如:
为什么需要 CDATA
XML 解析器默认会把所有文本当作“可解析内容”(PCDATA),遇到 、& 就可能报错或误解。比如下面这段直接写会出问题:
if (x < 10) { y = 1; }
因为 被当成标签起始,& 可能被当成实体开头。用 CDATA 就不用改写成 zuojiankuohaophpcn、& 等一堆转义符。
常见适用场景
- 在 XML 中嵌入 HTML 片段(如邮件模板、富文本字段)
- 存放 JavaScript 或 CSS 代码(避免符号冲突)
- 记录日志、错误信息、配置脚本等含大量特殊字符的纯文本
- 导出数据库字段时,字段值本身含 XML 敏感字符(配合 SQLXML 的 sql:use-cdata="1" 使用)
使用时要注意的限制
- CDATA 区块里不能出现字符串 ]]> —— 这是它的结束标记,一旦出现就会提前截断
- 不支持嵌套:不能在一个 CDATA 里再写一个
- 不能包含内嵌表达式(比如 VB.NET 的 XML 字面量中,不支持 放在 CDATA 里)
- 结尾 ]]> 必须紧挨着写,中间不能有空格、换行或制表符
基本上就这些。用对了省事又安全,用错了容易截断或解析失败。









