什么是<![CDATA[]]>在XML中是什么意思?

我经常在XML文件中发现这个奇怪的CDATA标记:

<![CDATA[一些资料]]>

我发现这个CDATA标签总是出现在开头,然后是一些东西

但有时使用,有时不使用。我假设它是为了标记一些东西是在那之后插入的“数据”。但是什么样的数据是一些东西呢?我用XML标记写的东西不是某种数据吗

CDATA代表字符数据,这意味着这些字符串之间的数据包括可以解释为XML标记但不应该解释为XML标记的数据

CDATA和comments之间的主要区别是:

  • 正如Richard指出的,CDATA仍然是文档的一部分,而注释则不是
  • 在CDATA中不能包含字符串]&gt(CDEnd),而注释中的--无效
  • 注释内无法识别参数实体引用

这意味着给定一个格式良好的文档中的这四个XML片段:

<!实体MyParamEntity“;“已扩大”&燃气轮机;

&lt--
在此评论中,我可以使用]]>
以及其他保留字符,如<
&",,及;,但%的参数;不会扩大
(如果检索此节点的文本,它将包含
%MyParameterity“而非”已扩展)
我不能把两个破折号放在一起。
--&燃气轮机;

<![CDATA[
在这个字符数据块中,我可以
尽可能多地使用双破折号(连同“lt;”、“amp;”、“和”一起使用)
*和*%MyParamEntity;将展开为文本
&“已扩展”…但是,我不能使用
CEND序列。如果我需要使用CEND,我必须从
使用连接CDATA节的括号或大于号。
]]&燃气轮机;

<说明>逃逸的CEND示例&lt/说明>
<!--此文本包含CEND]]&gt--&燃气轮机;
<!--在第一种情况下,我们将]]放在第一个CDATA块的末尾
及;在第二个CDATA块中-->
<数据&gt&书信电报;![CDATA[此文本包含CEND]]]&gt&书信电报;![CDATA[>]&gt&lt/数据>
<!--在第二种情况下,我们在第一个CDATA块的末尾添加了一个“]
以及;在第二个CDATA块中-->
<备选方案&gt&书信电报;![CDATA[此文本包含CEND]]&gt&书信电报;![CDATA[]>]&gt&lt/备选方案>

发表评论