JAXP

JAXPJava API for XMLProcessing,意為XML處理的Java API)是Java XML程式設計的應用程式接口之一,它提供解析和驗證XML文檔的能力。JAXP是在Java社區進程下開發的,包括JSR 5 (JAXP 1.0)和 JSR 63 (JAXP 1.1和1.2)兩個規範。

JAXP解析XML的三種基本接口為:

文檔對象模型解析接口或DOM接口

XML簡單API解析接口或SAX接口

XML流API或StAX接口(是JDK 6的一部分,為JDK 5提供單獨的包)

除了解析接口,JAXP還提供了XSLT接口用來對XML文檔進行數據和結構的轉換。

基本介紹

  • 中文名:JAXP
  • 外文名:Java API for XML Processing
  • JAXP支持:DOM、SAX、XSLT等
  • 處理器:XSLT
DOM接口,SAX接口,StAX接口,XSLT接口,版本,

DOM接口

DOM接口可能最容易理解。解析器解析整個XML文檔並構造出該文檔的一個完整的記憶體表示,使用類對文檔對象模型(DOM)級別2核心規範中的概念進行建模。
DOM解析器被稱作DocumentBuilder,因為它構建一個記憶體中的Document表示。javax.xml.parsers.DocumentBuilder是由javax.xml.parsers.DocumentBuilderFactory創建的。DocumentBuilder創建org.w3c.dom.Document的實例,Document是一個包含XML文檔中的所有節點的樹。結構中的每一個樹節點實現org.w3c.dom.Node接口。樹節點有許多不同類型的,表示XML文檔中不同的數據類型。最重要的節點類型有:
  • 元素節點,具有許多屬性
  • 文本節點,代表文檔元素開始和結束標籤之間的文字。
節點類型的完整列表,請參見org.w3c.dom包中的Javadoc文檔。

SAX接口

SAX解析器被稱作SAXParser,SAXParser是由javax.xml.parsers.SAXParserFactory創建的。與DOM解析器不同,SAX解析器並不創建XML文檔的記憶體表示,因此要更快使用更少的記憶體。而是,SAX解析器通過調用回調方法將XML文檔結構告知客戶端,也就是說,通過調用提供給解析器的org.xml.sax.helpers.DefaultHandler實例上的方法。
DefaultHandler類實現了ContentHandler,ErrorHandler,DTDHandler以及EntityResolver等接口。大多數客戶端關心ContentHandler接口中定義的方法,當SAX解析器在XML文檔中遇到元素時,相應的方法將被調用。接口中最重要的方法有:
  • startDocument()和endDocument()方法,當XML文檔的開始和結束時被調用。
  • startElement()和endElement()方法,當一個文檔元素開始和結束時被調用。
  • characters()方法,調用處理XML文檔元素的開始標籤和結束標籤之間的文本數據。
客戶端提供一個DefaultHandler的子類,實現這些方法,並在方法中對數據進行處理,可能會將數據存入資料庫,或寫出到流中。
在解析過程中,解析器可能需要訪問外部文檔。因此可能會使用XML Catalog將經常使用的XML文檔存儲在本地的快取中。
SAX接口是在2000年5月發布的Java 1.3中引入的。

StAX接口

StAX的設計介於DOM和SAX接口之間,在它的隱喻中,程式的入口點是一個代表文檔中一個位置的游標。應用程式可以按需向前移動游標 – 從解析器中“拉”出信息。這與基於事件的API(如SAX)不同,SAX將數據“推”給應用程式,要求應用程式維護事件間的狀態,如果套用需要知道在文檔中的位置信息。

XSLT接口

XSLT(可擴展樣式錶轉換語言)允許將XML文檔轉換為數據其他形式。應用程式使用javax.xml.transform包中的接口可以進行XSLT轉換。接口最初被稱為TrAX (Transformation API for XML),是由許多Java XSLT處理器的開發人員通過非正式協作開發的。
接口的主要特性包括:
  • 工廠類javax.xml.transform.TransformerFactory可以使套用動態地選擇使用哪一個XSLT處理器。
  • TransformerFactory上的方法用來創建javax.xml.transform.Templates對象, 表示樣式表的編譯後的形式。這是一個執行緒安全的對象,可以重複使用,順序或並發,在多個源文檔上套用同一個樣式表(或用用一個源文檔,不同的參數)
  • Templates上的方法可以創建javax.xml.transform.Transformer,表示樣式表的可執行形式。Transformer不可以線上程間共享,雖然也是可重用的。Transformer提供方法設定樣式表參數和序列化選項(例如,輸出是否縮進),以及一個實際運行轉換的方法。
JAXP定義了javax.xml.transform.Source和javax.xml.transform.Result兩個抽象接口來表示轉換的輸入和輸出。某種程度上,這是非常規使用Java接口,這是因為並不期待一個處理器會接受任何實現該接口的類,每一個處理器可以選擇支持那些Source和Result的處理。實際上所有JAXP處理器支持三種標準類型的Source (DOMSource,SAXSource,StreamSource)以及三種標準類型的Result (DOMResult,SAXResult,StreamResult)以及處理器自己的實現。

版本

J2SE版本 其中的JAX版本
1.41.1
1.51.3
1.61.4
1.71.4.5

相關詞條

熱門詞條

聯絡我們