我经常在XML文件中发现这个奇怪的CDATA标签:
<![CDATA[some stuff]]>
我观察到这个CDATA标记总是出现在开头,然后跟着一些东西。
但有时用,有时不用。我假设这是为了标记一些东西是“数据”,将被插入之后。但是什么是数据呢?我用XML标记写的东西不是某种数据吗?
我经常在XML文件中发现这个奇怪的CDATA标签:
<![CDATA[some stuff]]>
我观察到这个CDATA标记总是出现在开头,然后跟着一些东西。
但有时用,有时不用。我假设这是为了标记一些东西是“数据”,将被插入之后。但是什么是数据呢?我用XML标记写的东西不是某种数据吗?
当前回答
从维基百科:
在XML文档或外部解析实体中,CDATA节是一个 元素内容的一部分,标记为供解析器解释 仅作为字符数据,而不是标记。 http://en.wikipedia.org/wiki/CDATA
因此:CDATA中的文本被解析器视为字符,而不是XML节点。
其他回答
Cdata是您可能希望传递给xml解析器但仍然不解释为xml的数据。
Say for eg :- You have an xml which has encapsulates question/answer object . Such open fields can have any data which does not strictly fall under basic data type or xml defined custom data types. Like --Is this a correct tag for xml comment ? .-- You may have a requirement to pass it as it is without being interpreted by the xml parser as another child element. Here Cdata comes to your rescue . By declaring as Cdata you are telling the parser don't treat the data wrapped as an xml (though it may look like one )
注意,只有在直接将文本放入XML文本文件时才需要CDATA结构。
也就是说,只有在手动输入或以编程方式直接构建XML文本时才需要使用CDATA。
使用DOM处理器API或SimpleXML输入的任何文本都将自动转义,以防止违反XML内容规则。
尽管如此,有时使用CDATA可以减少原本由所有实体编码产生的文本大小,例如样式标记中的css或脚本标记中的javascript,其中许多语言构造使用HTML|XML中的字符,如<和>。
当我的xml元素需要存储HTML代码时,我曾经不得不使用CDATA。类似的
<codearea>
<![CDATA[
<div> <p> my para </p> </div>
]]>
</codearea>
CDATA意味着它会忽略任何可以被解释为XML标签的字符,比如<和>等。
它用于包含可能被视为xml的数据,因为它包含某些字符。
这样,里面的数据将被显示,但不会被解释。
它转义一个不能像往常一样传递给XML的字符串:
例子:
字符串中包含“&”。
你不能:
<FL val="Company Name">Dolce & Gabbana</FL>
因此,您必须使用CDATA:
<FL val="Company Name"> <![CDATA["Dolce & Gabbana"]]> </FL>