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

1254

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

<![CDATA[some stuff]]>

我注意到这个CDATA标签总是出现在开头,然后跟着一些东西。

但有时会用到它,有时不会。我想这是为了标记some stuff是在此之后将要插入的"data"。但是some stuff是什么样的数据呢?我在XML标签中写的任何内容不都是某种类型的数据吗?

13个回答

2

Cdata是一种数据,您可能希望将其传递给XML解析器,但仍不将其解释为XML。

例如:您有一个XML,其中封装了问题/答案对象。这样的开放字段可以拥有任何数据,它们并不严格属于基本数据类型或XML定义的自定义数据类型,比如--这是一个正确的XML注释标签吗?--。 您可能需要将其原样传递,而不被XML解析器解释为另一个子元素。在这里,Cdata可以帮助您。通过声明为Cdata,您告诉解析器不要将包装的数据视为XML(即使它看起来像)。


1
请注意,只有在直接将文本放置在XML文本文件中时才需要使用CDATA结构。
也就是说,如果手动输入或以编程方式直接构建XML文本,则只需要使用CDATA
使用DOM处理器API或SimpleXML输入的任何文本都将自动转义,以避免违反XML内容规则。
尽管如此,在某些情况下,使用CDATA可以减少所有实体编码产生的文本大小,例如在style标签中的CSS或script标签中的JavaScript中,许多语言结构使用HTML | XML中的字符,如<>

0

通常用于将自定义数据(如图片或声音数据)嵌入到XML文档中。


3
虽然你可以将文本编码的二进制数据放在CDATA段落中,但并非必须这样做,因为CDATA与二进制数据毫无直接关系。 - Joel Mueller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接