javaweb學習筆記(十):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的版本號。
④註釋(同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。