XML文件中CDATA的作用


操作XML文件時,如果允許用戶輸入內容,例如∶"< "、">"、"/"、""等,當生成XML時,會破壞了XML結構,使數據中斷。

在XML文檔中的所有文本都會被解析器解析,這就要用XML CDATA,只有在CDATA部件之內的文本會被解析器忽略。

 

1.解析文本
XML 解析器通常情況下會處理XML文檔中的所有文本。

當XML元素被解析的時候,XML元素內部的文本也會被解析:<message>This text is also parsed</message>。

XML解析器這樣做的原因是XML元素內部可能還包含了別的元素,象下面的例子,name元素內部包含了first和last兩個元素:

<name>

  <first>Bill</first>

  <last>Gates</last>

</name>

解析器會認為上面的代碼是這樣的:

<name>
<first>Bill</first>
<last>Gates</last>
</name>

 

2.轉義字符
不合法的XML字符必須被替換為相應的實體。

如果在XML文檔中使用類似"< "的字符, 那么解析器將會出現錯誤,因為解析器會認為這是一個新元素的開始。所以不應該象下面那樣書寫代碼:

<message>if salary < 1000 then</message>

為了避免出現這種情況,必須將字符"< "轉換成實體,象下面這樣:

< message>if salary < 1000 then< /message>

下面是五個在XML文檔中預定義好的實體:

< < 小於號 
> > 大於號 
& & 和 
&apos; ' 單引號 
" " 雙引號

實體必須以符號"&"開頭,以符號";"結尾。 
注意: 只有"< " 字符和"&"字符對於XML來說是嚴格禁止使用的。剩下的都是合法的,為了減少出錯,使用實體是一個好習慣。

 

3.CDATA部件
在CDATA內部的所有內容都會被解析器忽略。

如果文本包含了很多的"< "字符和"&"字符——就象程序代碼一樣,那么最好把他們都放到CDATA部件中。

一個 CDATA 部件以"< ![CDATA[" 標記開始,以"]]>"標記結束:

<script>
<![CDATA[
function matchwo(a,b) {
  if (a < b && a < 0) then {
    return 1
  } else {
    return 0
  }
}
]]>
</script>

在前面的例子中,所有在CDATA部件之間的文本都會被解析器忽略。

CDATA注意事項:
CDATA部件之間不能再包含CDATA部件(不能嵌套)。如果CDATA部件包含了字符"]]>" 或者"< ![CDATA[" ,將很有可能出錯哦。

同樣要注意在字符串"]]>"之間沒有空格或者換行符。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM