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

Gir*_*h K 3 xml cdata

我是XML及其相关技术的新手.

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

我在我的XML文件中使用它:

<text><![CDATA[<![CDATA[TAX INVOICE]]]]><![CDATA[>]]></text>
Run Code Online (Sandbox Code Playgroud)

我有以下问题.请帮我.

什么 <![CDATA[some text]]]]> 意思?

Mic*_*Kay 8

除非内容中有特殊字符,如" &"和" <",否则为字符串

<![CDATA[xxxxx]]>
Run Code Online (Sandbox Code Playgroud)

意思是完全一样的

xxxxx
Run Code Online (Sandbox Code Playgroud)

不同之处在于,在第二种形式中," &"和" <"具有特殊含义,而在CDATA形式中,唯一具有特殊含义的是字符串" ]]>"作为终结符.

你更复杂的例子:

<![CDATA[<![CDATA[TAX INVOICE]]]]><![CDATA[>]]>
Run Code Online (Sandbox Code Playgroud)

是一个噩梦,并且是由于懒散的编程习惯在CDATA部分中包含文本而导致的懒惰.CDATA部分不能嵌套,因此第一个]]>终止第一个<!CDATA[,这意味着该字符串相当于

<![CDATA[TAX INVOICE]]>
Run Code Online (Sandbox Code Playgroud)

您可能认为这反过来相当于

TAX INVOICE
Run Code Online (Sandbox Code Playgroud)

但事实并非如此,因为XML解析器只会解释外部CDATA分隔符,因此它将传递给应用程序的内容是

<![CDATA[TAX INVOICE]]>
Run Code Online (Sandbox Code Playgroud)


Sur*_*ngh 5

该术语CDATA来自SGML世界,它是 的复杂前身XML。该术语是 的缩写Character Data,表示数据包含字符,并且不应被解析。里面的标签、实体、属性、处理指令CDATA被视为文本,而不是XML元素。