XML簡介
為了便于了解JAXP的内容,簡單介紹XML的基本知識。有關文法和用途的内容請參考w3school的XML教程。
什麼是 XML?
XML 指可擴充标記語言(EXtensible Markup Language)
XML 是一種标記語言,很類似 HTML
XML 的設計宗旨是傳輸資料,而非顯示資料
XML 标簽沒有被預定義,您需要自行定義标簽
XML 被設計為具有自我描述性
XML 是 W3C 的推薦标準
XML示例
<?xml version="1.0" encoding="utf-8"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
結合示例,我們知道XML 被設計用來結構化、存儲以及傳輸資訊。它僅僅是純文字而已。有能力處理純文字的軟體都可以處理 XML。不過,能夠讀懂 XML 的應用程式(XML解析器)可以(基于DOM,SAX,StAX) 有針對性地處理XML 的标簽。這就是項目中需要解決的問題—XML解析。
可以看出根據XML解析器的實作機制不同,主要分為DOM,SAX,StAX。
DOM簡介
DOM (Document Object Model,文檔對象模型)定義了通路和操作文檔的标準方法。
什麼是DOM?
DOM 是 W3C(網際網路聯盟)的标準。
DOM 定義了通路 HTML 和 XML 文檔的标準:
“W3C 文檔對象模型 (DOM) 是中立于平台和語言的接口,它允許程式和腳本動态地通路和更新文檔的内容、結構和樣式。”
W3C DOM 标準被分為 3 個不同的部分:
- 核心 DOM - 針對任何結構化文檔的标準模型
- XML DOM - 針對 XML 文檔的标準模型
- HTML DOM - 針對 HTML文檔的标準模型
什麼是 XML DOM?
XML DOM 是:
- 用于 XML 的标準對象模型
- 用于 XML 的标準程式設計接口
- 中立于平台和語言
- W3C 的标準
XML DOM 定義了所有 XML 元素的對象和屬性,以及通路它們的方法(接口)。
換句話說:XML DOM 是用于擷取、更改、添加或删除 XML 元素的标準。
XML DOM 是将 XML 文檔作為一個樹形結構,而樹葉被定義為節點(如下圖)。
可以類比HTML DOM,更多關于XML DOM的内容,請參考w3school的XML DOM教程。
SAX簡介
SAX ( Simple API for XML ),是一個用于處理XML事件驅動的“推”模型,雖然它不是W3C标準,但它卻是一個得到了廣泛認可的API。
什麼是SAX?
SAX解析器不像DOM那樣建立一個完整的文檔樹,而是在讀取文檔時激活一系列事件,這些事件被推給事件處理器,然後由事件處理器提供對文檔内容的通路。
常見的事件處理器有三種基本類型:
● 用于通路XML DTD内容的DTDHandler
● 用于低級通路解析錯誤的ErrorHandler
● 用于通路文檔内容的ContentHandler,這也是最普遍使用的事件處理器。
StAX簡介
StAX (Streaming API for XML),是一種針對XML的流式拉分析API.
什麼是StAX?
StAX提供了兩套API用來處理XML,分别提供了不同程度的抽象。基于指針的 API 把 XML 作為一個标記(或事件)流來處理;應用程式可以檢查解析器的狀态,獲得解析的上一個标記的資訊,然後再處理下一個标記,依此類推。這是一種低層 API,盡管效率高,但是沒有提供底層 XML 結構的抽象。基于疊代器的 API 把 XML 作為一系列事件對象來處理。應用程式隻需要确定解析事件的類型,将其轉換成對應的具體類型,然後利用其方法獲得屬于該事件的資訊。
以上隻是對JAXP相關知識的簡單介紹,結合後續的代碼示例會有更深入的了解。
參考資料:
XML 新手入門基礎知識
XML 新手入門
JAXP解析XML(基于DOM模型)
JavaXML
XML解析器
Jaxp :Dom解析Xml文檔和SAX解析Xml文檔學習筆記
Java6.0新特性之StAX–全面解析Java XML分析技術
The Evolution of JAXP
An Introduction to StAX
推薦oracle的JAXP官方教程
Trail: Java API for XML Processing (JAXP)
參考web Services 教程
The Java Web Services Tutorial