知识文章 · 编写日期 2026-11-10

草榴存档:CDATA包住的文字是加密吗

不是。XML里的CDATA告诉解析器把一段内容当字符数据,其中的“<”和“&”通常按原字符保留,不作为标签或实体引用的开头。它没有把正文变成密文;能读取文件的人仍能看到里面的文字。

草榴论坛媒介与资料存档知识,限定XML 1.0字符数据段。示例均为本站原创通知文字,不读取真实帖子、私人导出或账号资料,也不宣称本站或同名论坛提供XML导出功能。

草榴存档XML对照图:实体写法与CDATA写法得到同一通知,CDATA内的实体名称在本次解析中仍是字面文字
原创XML短例,图中文字展示源码与解析值,不执行其中的标记;两种正确表示得到相同通知,第三例专门说明CDATA内部实体名的字面性。 本站原创SVG知识示意,无第三方图像;非现场照片或产品截图。

语法边界与保密边界不是一件事

CDATA段以<![CDATA[开始,以]]>结束。W3C说明它用于放入本来可能被当作标记的字符;这些定界符说明解析方式,不需要密钥,也没有提供只有某些读者才能阅读的条件。

比如资料文件中直接写着通知正文,即使正文被CDATA包围,文本编辑器仍能看见。不要把“代码看起来复杂”记为“已匿名或加密”,更不要因加了这一外壳便分享原本不适合公开的内容。

两种写法可以得到相同正文

原创通知片段为“甲 < 乙 & 丙”。XML文本写法可用<note>甲 &lt; 乙 &amp; 丙</note>;CDATA写法可用<note><![CDATA[甲 < 乙 & 丙]]></note>。本页在本地用XML解析器分别读取note的文字,两者都得到同一句。

在第一种写法中,&lt;与&amp;承担XML实体引用的作用;第二种写法把内容放进字符数据段,符号直接保留。比较时应明确你在看原文件还是解析结果,不把源码长短当成通知内容多少。

在CDATA里再写实体名,通常就是这些字面字符

如果写<note><![CDATA[甲 &lt; 乙]]></note>,得到的文字是“甲 &lt; 乙”,不会在这次XML解析中继续变成“甲 < 乙”。原因是CDATA内部没有把这段&开头的字符重新当作实体引用。

这并不意味着文件损坏。它可能本来就在演示实体语法;只有目标确实是显示小于号而结果出现实体名时,才需要检查是否选错表示方式。不能对所有导出文字反复做替换,直到符号看起来顺眼。

结束标记和嵌套是明确限制

W3C规定CDATA不能嵌套,]]>会结束当前段。因此它并非可以无条件包住任意字符串的万能容器。需要产生XML时,应让可靠的序列化工具按目标文本正确处理,而不是手工在未知内容前后拼接外壳。

本页只用不含结束序列的短通知核对概念,不给出把任意网页代码直接塞进页面执行的方法。XML解析后取得文本,与以后把它放进网页的什么位置又是不同步骤,后续展示仍应按所在位置正确处理。

资料交接写清三项就能减少误读

可将记录写成“文件格式:XML;正文存放:note中的CDATA;本次解析文字:甲 < 乙 & 丙”。这三个字段分别说格式、表示和结果,既不宣称原论坛使用这种结构,也不把语法解析成功当成内容真实或来源可信。

对自己的教学副本可以复算上述三个短字符串,记录一次解析结果即可。遇到真实资料中的身份、时间或第三人信息,是否适合分享仍需另行判断;CDATA不会替你删除这些文字。

动手核对

  1. 确认材料是XML及字符数据位置,保留原文副本。
  2. 辨认CDATA起止符,不把它称为密码或加密。
  3. 用不含隐私的短例子解析一次,比较所得文本。
  4. 需要交接时分列格式、表示方式和实际文字,另核分享范围。

常见问题

CDATA里面的&…;会自动变成对应字符吗?

在此XML字符数据段中按字面保留,不像普通XML文本里的实体引用那样处理。

包上CDATA就能安全公开私人正文吗?

不能。它没有提供访问限制、匿名化或保密功能。

CDATA可以再包一层CDATA吗?

XML 1.0不允许CDATA嵌套,结束标记也有明确含义。不要手工把任意文本当作无条件安全输入。

依据与延伸阅读

继续阅读