天天看點

JAXP學習(1)基礎知識

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解析。

JAXP學習(1)基礎知識

可以看出根據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 文檔作為一個樹形結構,而樹葉被定義為節點(如下圖)。

JAXP學習(1)基礎知識

可以類比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