javaWeb 之 XML基礎(一)

1、概述

一、XML

● XML是一種通用的數據交換格式css

● 許多系統的配置文件搜使用XML格式數據庫

● JSP文檔也逐步向XML愈發格式過渡瀏覽器

● 許多項目都採用XML做爲數據交換格式網絡

● 在平常應用中會常常看到XML格式的文件dom

● 掌握XML是軟件開發人員的一項基本技能this

二、什麼是配置文件

● 配置文件就是記錄應用程序的配置信息的文件編碼

● 傳統配置文件的格式:spa

         #Db.Properties翻譯

           DBServer=192.168.0.100code

           Database=emp

           Port=1443

           Username=zxx

           Password=123

3、XML的起源與做用

● 在線電子商務活動交換的電子文檔必須採用某種標準格式,統一電子文檔的標準規範是電子商務的基礎。

● HTML不適合做爲電子商務的文檔標準。

● SGML(Standard Generalized Markup Language)國語複雜,沒法適應網絡上的平常應用。

● W3C於1998年2月批准了XML(Extensible Markup Language)的1.0版本。XML是SGML的建華,語法與HTML很是類似。

● XML具備SGML的強大功能和可擴展性,同時又具備HTML的簡單性。

● XML文檔很容易建立,並結構清晰,不只讓人可以明白,還然計算機也可以明白。

● XML做爲一種公訂的,開放 的標準,不受知識產權的限制。

4、XML與HTML的比較

● HTML將數據和顯示效果混在一塊兒,它是一種表現技術;XML文檔只是存儲了數據和描述了數據之間的關係,沒有規定該如何顯示數據。

● HTML的格式要求比較鬆散;而XML是很是嚴格的標記語言。

● HTML的標記集合是固定的;而XML只是提供了一個標準,人們能夠按照這個標準來定義本身專用的標記。

● XML容許粒度更新,HTML不支持相似功能。

● XML不是HTML的升級,也不是HTML的替代產品。

● HTML目前已經再也不是WEB標記的標準,它是已經被XHTML所取代,XHTML是HTML和XMl的混合物,是XML在WEB領域的一種應用。

五、XML與數據庫的比較

● 一個XML文檔就像數據庫中的一個表,具備三個要素:文檔結構、文檔數據和文檔樣式。

● XML文檔的結構至關與數據庫的表結構。

● XML標籤內嵌套的數據就至關於數據庫表中的某個字段內的數據。

● 數據庫表中的數據能夠採用表格、表單或其餘形式顯示,還能夠用程序來查詢、運算、修改。XML文檔中的數據也能夠被其餘應用程序查詢、運算、修改和以多種方式顯示。

● 多個XML文檔的元素之間還能夠想數據庫的表字段同樣定義主外鍵關係,能夠把XML文檔當作是一個很是小型的數據庫。

● XML很是適合信息交換,但不適合於大量數據處理。

2、XML的基本語法

一、文檔聲明

● 最簡單的聲明語法:

         <?xml version=」1.0」 ?>

● 用encoding屬性說明文檔的字符編碼:

         <?xml version=」1.0」encoding=」GB2312」?>(未設置默認爲UTF-8或UTF-16)

● 用standalone屬性說明文檔是否獨立:

          <?xml vesion=」1.0」encoding=」GB2312」standalone=」yes」?>(須要配合其餘文件,standalone設置爲「no」,encoding和standalone同時設置時,standalone必須在encoding後面)

二、元素定義

● 一個XML元素由一個標記來定義,包括開始和借宿標記以及其中的內容,例如:

<書名>JavaWeb</書名>

● 一個元素中能夠嵌套若干子元素。

● 格式良好的XML文檔必須有且僅有一個根元素,其餘元素都是這個根元素的子孫元素。

● 空元素能夠不實用借宿標記,但必須在起始標記的借宿定界符(>)前面增長一個正斜槓(/)字符,例如:

      <img src=」log.gif」 />

● 全部的元素都必須況且i的嵌套,絕對不容許標籤交叉,c錯例:

      <b>welcome to<i>www.baidu.com<b><i>

元素的標記名稱規範

能夠包含自摸、數字以及其餘一些可見字符,但必須遵照下面的一些規範:

● 區分大小寫,例如<P><p>是兩個不一樣的標籤。

● 不能以數字或「_」(下劃線)開頭。

● 不能以字符組合xml(或XML、Xml等)開頭。

● 不能包含空格。

● 名稱中間不能包含冒號:。

元素的標記名稱建議

● 不要使用「.」,由於在不少程序語言中,「.」用於引用對象的屬性。

● 最好不要用減號(-),而如下劃線(_)代替,以免與表達式中的減號(-)運算符發生衝突。

● 名稱儘可能簡短,以減小XML文檔的大小。

● 名稱的大小寫儘可能採用同一標準,要麼所有大寫,要麼所有小寫。

● 名稱可使用非英文字符,例如中文,可是有些軟件可能不支持英文字符之外的字符,在使用時應考慮這種狀況。

三、屬性定義

● 一個標籤能夠有多個屬性,每一個屬性都有它本身的名稱和取值,例如:

       <售價  單位=」元「>58</售價>

● 屬性值必定要用雙引號(」」)或單引號(’’)引發來

● 屬性遵循與標籤相同呃命名規範

● 屬性能夠被改爲用子元素來描述一樣的信息,例如:

        <售價>

                      <單位>元</單位>

                      <價格>58</價格>

        </售價>

四、註釋

● 用」<!--註釋—>「這種格式加入註釋

● XML聲明以前不能有註釋

● 一對註釋符號之中不能包含另外一對註釋符號,錯例:

        <!--大段註釋

         ……

               <!--局部註釋-->

         ……

         -->

五、空格和換行的處理

● 對於XML中的標籤之外的全部空格和換行,XML解析程序都要一個個如是地交割下游程序去處理。

● 下面兩段內容的意義是不同的

      第一段:                                        第二段:

                                                           <網址>

     <網址>www.baidu.com</網址>            www.baidu.com

                                                           </網址>

● 因爲在XML中,空格和換行都做爲原始內容被處理,因此在編寫XML文件時,使用換行和縮進等方式來讓原文件中的內容清晰可讀的」良好「書寫習慣可能要被迫改變。

六、CDATA區

● 問題:

XML文檔中包含相似」Elements look like <this>「的文本,其中的」<this>「將被解析程序解釋成一個元素,而人們實際想要的是」<this>」所表示的願意文本。

● CDATA區全稱爲character data,以」<![CDATA[「開始,以」]]>「結束,在二者之間嵌入不想被解析程序解析的原始數據,解析器不對CDATA區中的內容進行解析,而是將這些數據原封不動地交給下游程序去處理。

● CDATA區中的起始和結束處有沒有空格和換行字符是有區別的,例如:

       <![CDATA[www.baidu.com]]>

       <![CDATA[

       www.baidu.com

       ]]>

● 」<![CDATA[「不能寫成」<![cdata[「或」<![Cdata[「。

● CDATA區內部不能出現字符串」]]>「,該如何解決?

在CDATA內部的全部內容都會被解析器忽略。一個 CDATA 部件以"<![CDATA[" 標記開始,以"]]>"標記結束。可是要記住,CDATA是不可以嵌套的。可是如今,就是有人要求實現CDATA的嵌套。

好比,將下面這段XML加到另一個XML的某個元素裏面:

<?xml version="1.0" encoding="UTF-8" ?>
<System><id>library</id>
<name>Library Management</name>
<description><![CDATA[This is a sample library management subsystem for Signet.]]></description>
<Categories>
<System/>

將內部的CDATA的結尾轉義?那就變成了"<![CDATA[" 和"]]>amp;",這樣很差,接收XML的那一方怎麼會知道你在裏面加上了轉義?

那麼,能夠把CDATA的結尾的"]]>"破壞掉,把它分到兩個CDATA中,而後調用Java的API讀取該元素的數據時,實際上API同時讀取兩個CDATA塊,而後合成一個。

那麼,把上面的XML做爲一個字符串來處理,將"]]>"替換爲"]]]]><![CDATA[",千萬要記住,不要包含空格進去。這樣,結果應該是

<?xml version="1.0" encoding="UTF-8"?>
<Messages>
<Message type="data">
<code>1199242678515-176590595</code>
<date>2008/01/02</date>
<time>10:57:58</time>
<content><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
<System><id>library</id>
<name>Library Management</name>
<description><![CDATA[This is a sample library management subsystem for Signet.]]]]><![CDATA[></description>
<Categories>
<System/>]]></content>
</Message>

</Messages>

這樣,利用Object org.dom4j.Element.getData()方法獲得的數據纔是原始的XML片斷。

七、特殊字符

特殊字符 替代符號
& &amp;
< &lt;
> &gt;
&quot;
&apos;

八、處理指令(processing instruction)

● 處理指令是processing instruction 的中文翻譯,一般簡稱PI,用來爲處理XML文檔的應用程序提供指示信息。

● 處理指令以「<?」做爲開頭,以「?>」做爲結尾,XML聲明語句就是最多見的一種處理指令。

● XML分析器把處理指令原封不動的傳給應用程序,由應用程序來解析這個指令,按照它所提供的信息進行處理。例如,在某個XML文檔中能夠包含下面的語句來告訴瀏覽器使用book.css控制起顯示效果:

<?xml-stylesheet type=」text/css」href=」book.css」?>

相關文章
相關標籤/搜索