知识文章 · 编写日期 2026-11-10
草榴存档:CDATA包住的文字是加密吗
不是。XML里的CDATA告诉解析器把一段内容当字符数据,其中的“<”和“&”通常按原字符保留,不作为标签或实体引用的开头。它没有把正文变成密文;能读取文件的人仍能看到里面的文字。
草榴论坛媒介与资料存档知识,限定XML 1.0字符数据段。示例均为本站原创通知文字,不读取真实帖子、私人导出或账号资料,也不宣称本站或同名论坛提供XML导出功能。
语法边界与保密边界不是一件事
CDATA段以<![CDATA[开始,以]]>结束。W3C说明它用于放入本来可能被当作标记的字符;这些定界符说明解析方式,不需要密钥,也没有提供只有某些读者才能阅读的条件。
比如资料文件中直接写着通知正文,即使正文被CDATA包围,文本编辑器仍能看见。不要把“代码看起来复杂”记为“已匿名或加密”,更不要因加了这一外壳便分享原本不适合公开的内容。
两种写法可以得到相同正文
原创通知片段为“甲 < 乙 & 丙”。XML文本写法可用<note>甲 < 乙 & 丙</note>;CDATA写法可用<note><![CDATA[甲 < 乙 & 丙]]></note>。本页在本地用XML解析器分别读取note的文字,两者都得到同一句。
在第一种写法中,<与&承担XML实体引用的作用;第二种写法把内容放进字符数据段,符号直接保留。比较时应明确你在看原文件还是解析结果,不把源码长短当成通知内容多少。
在CDATA里再写实体名,通常就是这些字面字符
如果写<note><![CDATA[甲 < 乙]]></note>,得到的文字是“甲 < 乙”,不会在这次XML解析中继续变成“甲 < 乙”。原因是CDATA内部没有把这段&开头的字符重新当作实体引用。
这并不意味着文件损坏。它可能本来就在演示实体语法;只有目标确实是显示小于号而结果出现实体名时,才需要检查是否选错表示方式。不能对所有导出文字反复做替换,直到符号看起来顺眼。
结束标记和嵌套是明确限制
W3C规定CDATA不能嵌套,]]>会结束当前段。因此它并非可以无条件包住任意字符串的万能容器。需要产生XML时,应让可靠的序列化工具按目标文本正确处理,而不是手工在未知内容前后拼接外壳。
本页只用不含结束序列的短通知核对概念,不给出把任意网页代码直接塞进页面执行的方法。XML解析后取得文本,与以后把它放进网页的什么位置又是不同步骤,后续展示仍应按所在位置正确处理。
资料交接写清三项就能减少误读
可将记录写成“文件格式:XML;正文存放:note中的CDATA;本次解析文字:甲 < 乙 & 丙”。这三个字段分别说格式、表示和结果,既不宣称原论坛使用这种结构,也不把语法解析成功当成内容真实或来源可信。
对自己的教学副本可以复算上述三个短字符串,记录一次解析结果即可。遇到真实资料中的身份、时间或第三人信息,是否适合分享仍需另行判断;CDATA不会替你删除这些文字。
动手核对
- 确认材料是XML及字符数据位置,保留原文副本。
- 辨认CDATA起止符,不把它称为密码或加密。
- 用不含隐私的短例子解析一次,比较所得文本。
- 需要交接时分列格式、表示方式和实际文字,另核分享范围。
常见问题
CDATA里面的&…;会自动变成对应字符吗?
在此XML字符数据段中按字面保留,不像普通XML文本里的实体引用那样处理。
包上CDATA就能安全公开私人正文吗?
不能。它没有提供访问限制、匿名化或保密功能。
CDATA可以再包一层CDATA吗?
XML 1.0不允许CDATA嵌套,结束标记也有明确含义。不要手工把任意文本当作无条件安全输入。
依据与延伸阅读
- W3C:XML 1.0第五版,2.7 CDATA Sections(W3C,核验日期 2026-11-10)
CDATA起止、内部字符按字面处理与不可嵌套。通知例子和本地解析结果为本站原创。