1. 程式人生 > >XML的相關基礎知識分享

XML的相關基礎知識分享

XML和Json是兩種最常用的在網路中資料傳輸的資料序列化格式,隨著時代的變遷,XML序列化用於網路傳輸也逐漸被Json取代,前幾天,單位系統整合開發對接介面時,發現大部分都用的WebService技術,而資料傳輸序列化都是XML,所以想在此重溫一下關於XML的相關知識。

一、什麼是XML

1、XML是可擴充套件標記語言

2、XML宗旨是傳輸資料,而非顯示資料

3、XML沒有預定義標籤,都需要自行定義標籤

4、XML不會做任何事情,他設計出來就是為了結構化、儲存和傳輸資訊用的

5、XML是純文字,有能力處理純文字的軟體,都可以處理XML

二、XML結構

首先我們來看一個簡單的XML示例

1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <note>
3 <to>小魔王</to>
4 <from>女神</from>
5 <heading>表白</heading>
6 <body>我喜歡你好久了</body>
7 </note>

第一行是XML宣告,他定義XML的版本(1.0)和所使用的編碼(ISO-8859-1 = Latin-1/西歐字符集)。

下一行描述文件的根元素<note>

接下來的4行描述根元素的4個子元素 to、from、heading、body

最後一行定義根元素的結尾

看上面的結構,我們可以設想一下:這個XML文件包含了 女神 給 小魔王 表白的資訊。

這樣看來,XML具有出色的自我描述性,同意嗎?

三、注意點:

1、XML文件必須包含根元素,該元素是所有其他元素的父元素

2、XML文件中的元素形成了以可文件樹,這棵樹從根部開始,並擴充套件到樹的最低端,所有元素均可擁有子元素

3、父、子以及同胞等術語用於描述元素之前的關係,父元元素擁有子元素,相同層級上的子元素成為同胞(兄弟或姐妹)

下面我們來個示例:

 1 <?xml version="1.0" encoding="ISO-8859-1"?>
 2 <bookstore>
 3 <book category="COOKING">
 4   <title lang="en">Everyday Italian</title> 
 5   <author>Giada De Laurentiis</author> 
 6   <year>2005</year> 
 7   <price>30.00</price> 
 8 </book>
 9 <book category="CHILDREN">
10   <title lang="en">Harry Potter</title> 
11   <author>J K. Rowling</author> 
12   <year>2005</year> 
13   <price>29.99</price> 
14 </book>
15 <book category="WEB">
16   <title lang="en">Learning XML</title> 
17   <author>Erik T. Ray</author> 
18   <year>2003</year> 
19   <price>39.95</price> 
20 </book>
21 </bookstore>

示例圖解:

 

 

 例子中的根元素是<bookstore>,文件中的所有<book>元素有被包含在<bookstore>中。

<book>元素有4個子元素:<title>、<author>、<year>、<price>

4、所有元素均可擁有文字內容和屬性(類似HTML中)

5、所有XML元素又必須有關閉標籤(注:XML宣告沒有關閉標籤這不是錯誤,宣告不屬於XML本身的組成部分,他不是XML元素,也不需要關閉標籤)

6、XML標籤對大小寫敏感,即<Letter>與<letter>是兩個不同的標籤

7、XML的屬性值必須加引號(無論數字還是非數字)。

8、XML中,空格會被保留(與HTML不同)

四、實體引用

在XML中,一些字元擁有特殊的意義。

比如”<“ ,如果你將字元”<“放到XML元素中,會發生錯誤,這是一因為解析器會把它當作新元素的開始,例如:

<age>19<20</age>

為了避免這個錯誤,請用實體引用來代替”<“字元:

<age>19&lt;20</age>

在XML中,有5個預定義的實體引用,如下:

 

 注:在XML中,只有字元”<“,”&“ 是非法的,">"是合法的,但是用實體引用來代替它是一個好習慣。

XML還有一些高階的用法,比如名稱空間、CDATA 等等,我們將會在下次進行分