1. 程式人生 > >javaweb學習筆記(十):XML

javaweb學習筆記(十):XML

目錄

 

1 xml入門

2 xml語法

3 xml顯示

4 XML解析方式及工具

5 xml約束


1 xml入門

Extensible Markup Language(可擴充套件標記語言),XML 的設計宗旨是傳輸資料,而不是顯示資料。XML 標籤沒有被預定義,需要自行定義標籤。

XML 和 HTML 為不同的目的而設計:

    XML 被設計用來傳輸和儲存資料,其焦點是資料的內容。

    HTML 被設計用來顯示資料,其焦點是資料的外觀。

2 xml語法

在一個xml文件中,有且僅有一個根標籤。

①標籤:配對標籤(如:<note></note>)或空標籤(如:<note/>)

可有字母和數字和其他字元組成,但不能以數字開頭,且區分大小寫。

②屬性:屬性值必須以引號包含,一個標籤可以有多個屬性,但不能有重複的屬性名。

例:<note name=zhangsan id=2> student </note>

③文件宣告(可選,若存在需放第一行):<?xml version=1.0 encoding=utf-8?>

version:xml的版本號。

encoding:解析xml檔案時查詢的碼錶。

④註釋(同HTML):<!-- xml註釋 -->

⑤轉義字元

<

<

less than

>

>

greater than

&

&

ampersand

'

'

apostrophe

"

"

quotation mark

⑥CDATA塊:讓一些包含特殊字元的內容統一進行原樣輸出。

<![CDATA[

內容

]]>

<note>
    <![CDATA[
        <p>段落</p>
        <!--原樣輸出  xiao hua-->
    ]]>
</note>

3 xml顯示

xml文件不會攜帶有關如何顯示資料的資訊。大多數瀏覽器僅僅把xml文件顯示為原始碼。

①可以通過css顯示xml文件。如在xml檔案開頭加入:

<?xml-stylesheet type="text/css" href="格式化css檔案"?>

②也可以通過XSLT檢視xml檔案,它會把xml轉為HTML。(推薦)

4 XML解析方式及工具

xml解析方式(原理不同):

①DOM解析:xml解析器一次性把整個xml文件載入進記憶體,然後在記憶體中構建一顆Document的物件樹,通過Document物件,得到樹上的節點物件,通過節點物件訪問(操作)到xml文件的內容。

xml DOM(xml Document Object Module,文件物件模型)定義了訪問和處理xml文件的標準。XML DOM 定義了所有 XML 元素的物件和屬性,以及訪問它們的方法(介面)。

根據 DOM,XML 文件中的每個成分都是一個節點。其中整個文件是一個文件節點(Document物件),文件節點只有一個根標籤,樹上的分支叫節點(Node),節點Node(父節點)細分為:每個 XML 標籤是一個標籤節點(Element),包含在 XML 標籤中的文字是文字節點(Text),每一個 XML屬性是一個屬性節點(Attribute),註釋是註釋節點(Comment)。

②SAX解析

DOM解析

SAX解析

原理: 一次性載入xml文件,不適合大容量的檔案讀取

原理: 載入一點,讀取一點,處理一點。適合大容量檔案的讀取

DOM解析可以任意進行增刪改

SAX解析只能讀取

DOM解析讀取任何位置的資料,甚至往回讀

SAX解析只能從上往下,按順序讀取,不能往回讀

DOM解析面向物件的程式設計方法(Node,Element,Attribute),Java開發編碼比較簡單。

SAX解析基於事件的程式設計方法java開發編碼相對複雜。

5 xml約束

要求:能夠看懂約束內容,根據約束內容寫出符合規則的xml檔案。(具體的DTD約束的語法和Schema約束的語法可參考W3School教程。)

XML語法與約束的區別:

XML語法: 規範xml檔案的基本編寫規則。(由w3c組織制定的)

XML約束: 規範XML檔案資料內容格式的編寫規則。(由開發者自行定義)

XML約束技術:

DTD約束:語法相對簡單,功能也相對簡單。

Schema約束:語法相對複雜,功能也相對強大。(主要學習名稱空間

XML Schema VS DTD:

1.XML Schema符合XML語法結構。

2.DOM、SAX等XML API很容易解析出XML Schema文件中的內容。

3.XML Schema對名稱空間支援得非常好。

4.XML Schema比XML DTD支援更多的資料型別,並支援使用者自定義新的資料型別。

5.XML Schema定義約束的能力非常強大,可以對XML例項文件作出細緻的語義限制。

6.XML Schema不能像DTD一樣定義實體,比DTD更復雜,但Xml Schema現在已是w3c組織的標準,它正逐步取代DTD。