1. 程式人生 > >XML中的轉義字元和CDATA部件

XML中的轉義字元和CDATA部件

【yasi】CDATA 即 character data

解析資料

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>

轉義字元

不合法的XML字元必須被替換為相應的實體。

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

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

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

<message>if salary &lt; 1000 then</message>

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

&lt; < 小於號
&gt; > 大於號
&amp; &
&apos; ' 單引號
&quot; " 雙引號

實體必須以符號"&"開頭,以符號";"結尾。

注意: 只有"<" 字元和"&"字元對於XML來說是嚴格禁止使用的。剩下的都是合法的,為了減少出錯,使用實體是一個好習慣。

CDATA部件

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

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

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

複製程式碼 <script><![CDATA[
function matchwo(a,b)
{
if (a < b && a <0) then
{
return1
}
else
{
return0
}
}
]]
></script> 複製程式碼

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

CDATA注意事項:

1.CDATA部件之間不能再包含CDATA部件(不能巢狀)。如果CDATA部件包含了字元"]]>" 或者"<![CDATA[" ,將很有可能出錯哦。

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

<![CDATA[ ]]>是什麼意思???
=================================================

標明是純文字的,沒有這個的話 <  >  & 字元是不能直接存入XML的,需要轉義,而用這個標記則不需要轉義而將這些符號存入XML文件。
可以避免未預料的特殊符號導致XML解析出錯。


c#涉及到關於XML的CDATA和驗證有效性的問題
我剛開始學習XML的東西,這裡面我遇到一個叫做CDATA的段。這裡面的解釋是在CDATA裡面的所有東西都會被解析器忽略我不清楚這是什麼意思。用簡單的話來說就是CDATA什麼時候用,這裡面的東西有什麼用。如果用這個了,會產生什麼樣子的結果。 
還有就是XML有效性的驗證。這個是什麼意思,為什麼要驗證有效性呢,一般怎麼驗證呢,方法如何?我看書上說有DTD和XML Schema的兩個方法,如何用,有什麼區別呢? 
問題雖然多了點,但是就是兩個主要的問題。希望知道的大俠幫幫小弟,用通俗簡單一點的話告訴我。萬分感謝。
==================================================

當你用FLASH和xml結合做網站應用程式時,例如讓人自由輸入姓名時,人們可以輸入一些符號,例如∶"<"、">"、"/"、"?"等,當生成XML時,會破壞了XML結構,使資料中斷。

這就要用XML CDATA

在XML文件中的所有文字都會被解析器解析。

只有在CDATA部件之內的文字會被解析器忽略。


<![CDATA[ ]]>是什麼意思?~

從資料庫裡讀取資料生成XML檔案,加個“<![CDATA[    ]]>“是什麼意思?
Response.Write "<body><![CDATA["
Response.Write rs("message")
Response.Write "]]></body>"
============================================

標明是純文字的,沒有這個的話 <  >  & 字元是不能直接存入XML的,需要轉義,而用這個標記則不需要轉義而將這些符號存入XML文件。

可以避免未預料的特殊符號導致XML解析出錯。



PCDATA和CDATA的區別究竟是什麼呢?
=============================================
PCDATA表示已解析的字元資料。
   CDATA是不通過解析器進行解析的文字,文字中的標籤不被看作標記。
   CDATA表示裡面是什麼資料XML不會解析.比如可能是下面的一段
   <![CDATA[ 
       if(a>b){
          System.out.println(a);
     }

     ]]>

    注意上面的一個">"符號.


    PCDATA的資料是要給XML解析器去解析的,那上面的>去解析肯定會出錯了,所以要用實體定義.上面的資料如果用PCDATA表示如下:

      if(a&gt;b){
         System.out.println(a);
      }


    
     cdata是在XML文件裡面使用的關鍵字,用來告訴瀏覽器,這部分內容不用解析,是給其他程式用的,比如JAVASCRIPT等等,#PCDATA是在 XML約束文件裡使用的,如DTD型別的約束文件,在這裡面表示元素的內容或屬性的取值範圍等等,是字串形式的,


相關推薦

XML轉義字元CDATA部件

【yasi】CDATA 即 character data 解析資料 XML 解析器通常情況下會處理XML文件中的所有文字。 當XML元素被解析的時候,XML元素內部的文字也會被解析: <message>This text is also pars

android xml轉義字元的使用

如果一段文字需要多個TextView拼貼,比如:“我叫XXX,今年XX歲了,身高X.X米”; 可以考慮引用string.xml檔案中預定義的字串拼接實現. 例子: 1.在string.xml中先定義好格式 <string name="hello">St

Java| Java轉義字元路徑符

在java的實際開發中,經常會遇填寫一個檔案的相對路徑或者是絕對路徑的問題,對於初學者來說,經常犯難的是到底是用\ 還是用/的問題,本文將徹底解決這個問題的困擾. 先來看要下路徑符號在windows系統和再linux系統寫的顯示使用的區別: Windows下

Javaxml轉義字元gt,gte,lt,lte縮寫

java mybatis XML檔案中不允許出現">"、"<"之類的符號。需要轉義 欄位 符號 說明 &lt ; < 小於號 &gt

XML學習(簡介、語法、註釋、轉義字元CDATA區)

XML簡介 - XML:可擴充套件標記語言 - 可擴充套件:HTML的標籤是預定義的,可以直接拿來使用,但XML語言的標籤是自定義的。標籤名可以自定義,標籤中的屬性也可以自定義 - XML可以解決的問題:處理資料之間的關係 - XML常見應用: (1)XML可以儲存資料。(類似小

.xml轉義字元忽略解析

1.轉移字元: 不合法的XML字元必須被替換為相應的實體。 例如:如果在XML文件中使用類似"<" 的字元, 那麼解析器將會出現錯誤,因為解析器會認為這是一個新元素的開始。 應該將其轉為實體。 XML中預定義的實體: &lt; < 小於號 &a

printf語言轉義字元格式控制符的介紹

轉義字元參考: /a:蜂鳴,響鈴/b:回退:向後退一格/f:換頁/n:換行,游標到下行行首/r:回車,游標到本行行首/t:水平製表/v:垂直製表//:反斜槓/’:單引號/”:雙引號/?:問號/ddd:三位八進位制/xhh:二位十六進位制/0:空字元(NULL),什麼都不做

xml的DTDschema

stun 轉義 是否 xml語法 target san int log 概述 XML的文檔聲明<?xml version="1.0" encoding="UTF-8" ?> xml轉義字符 <![CDATA[內容]]> 實例: <![CDAT

mapper.xml轉義

1、用轉義字元轉義 XML轉義字元                       &lt;           &

XML處理轉義字元

轉自:https://www.cnblogs.com/catgatp/p/6403382.html 被<![CDATA[]]>這個標記所包含的內容將表示為純文字,比如<![CDATA[<]]>表示文字內容“<”。 此標記用於xml文件中,我們先來看

細說 Java 字元字串( 一 )

一道經典問題 Java裡的char型別能不能儲存一箇中文字元? 對於這道題,絕大多數的答案都是“可以儲存”。給出的原因包括: 1. java中的char是unicode儲存,unicode編碼字符集中包含了漢字,所以可以儲存中文; 2. java內部其實是使用的UTF-16

160311、mybatis sql語句轉義字元

 問題: 在mapper  ***.xml中的sql語句中,不能直接用大於號、小於號要用轉義字元 解決方法:   1、轉義字串 小於號    <    &lt; 大於號    >

回車換行的不同以及 轉義字元ASCII碼值—(附ASCII碼錶)

問題來源: “回車”(carriage return)VS  “換行”(line feed) 在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鐘可以

Android轉義字元

下面是android中需要轉義的表: 字元 ASCII碼 轉義字元 “ &#34; &quot; & &#38; &

mybatis xml特殊字元處理

出處:http://yaobenzhang.blog.163.com/blog/static/214395113201561523017861/ 1,CDATA區: 它的全稱為character data,以"<![CDATA[ "開始,以" ]]>"

Servlet 工程 web.xml 的 servlet servlet-mapping 標籤

摘錄某個工程的 web.xml 檔案片段: 訪問順序為1—>2—>3—>4,其中2和3的值必須相同。 url-pattern 標籤中的值是要在瀏覽器位址列中輸入的 url,可以自己命名,這個 url 訪問名為 servlet-name 中值的

《C語言及程式設計》資料——C語言轉義字元

下面是C語言中的轉義字元及其意義:轉義字元意義ASCII碼值(十進位制)\a響鈴(BEL)007\b退格(BS) ,將當前位置移到前一列008\f換頁(FF),將當前位置移到下頁開頭012\n換行(LF

js替換字串轉義字元"\"的方法

查詢替換功能非常強大,但模板難記複雜。 JavaScript中String物件的match()、replace()這2個方法都要使用正則表示式的模板。當模板內容與字串不相匹配時,match()返回null,replace()返回原字串。 模板的用法是關鍵。flag:

android string.xml 格式化字元

在string.xml中: <string name="reset_battery_low_dialog_message" formatted="false">"Battety is less than %1$d%, Can nott do that!"<

Java轉義字元反斜槓 \ 的代替方法 | repalceAll 內涵解析

一、需求 現有一個字串str String str = "{\\\"name\\\":\\\"spy\\\",\\\"id\\\\":\\\"123456\\\"}"; System.out.println("str = " + str); 在控制檯的