首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

XML 程式設計總結 (一):JAXP 核心解析器與 DOM/SAX/StAX 三大介面概覽

     編輯:Java 綜合教學

XML 程式設計總結 (一):JAXP 核心解析器與 DOM/SAX/StAX 三大介面概覽

本系列針對 Java 領域主流 XML 處理技術進行系統歸納。本文為第一部分,介紹 JAXP 架構、三大標準解析介面 (DOM、SAX、StAX) 核心差異,並以 W3C books.xml 為範例資料,奠定後續實作基礎。

一、JAXP (Java API for XML Processing) 架構

JAXP 定義了 Java 操作 XML 的標準 API,包含 解析 與 轉換 兩大能力。核心由三大解析介面組成:

  1. DOM (Document Object Model):樹狀記憶體模型,隨機存取,適合小文檔頻繁修改。
  2. SAX (Simple API for XML):事件驅動流式解析,單向唯讀,記憶體占用極低,適合大文檔順序讀取。
  3. StAX (Streaming API for XML):拉式流式解析,程式主動拉取事件,可讀可寫,兼具效能與靈活性。

規範演進:JSR 5 (JAXP 1.0) → JSR 63 (JAXP 1.1/1.2) → 整合進 JDK 1.4+。

二、範例 XML 資料 (books.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">XQuery Kick Start</title>
        <author>James McGovern</author>
        <author>Per Bothner</author>
        <author>Kurt Cagle</author>
        <author>James Linn</author>
        <author>Vaidyanathan Nagarajan</author>
        <year>2003</year>
        <price>49.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>

三、三大解析介面核心對比

維度DOMSAXStAX
解析模式樹狀載入整份文檔事件推送事件拉取
記憶體佔用高 (與文檔大小成正比)極低 (常數級)低 (僅當前事件)
存取方式隨機 (XPath、樹遍歷)順序單向順序可控
修改支援完整 (增刪改節點)不支援 (唯讀)可寫 (XMLStreamWriter)
程式設計風格物件導向回調/訪問者模式迭代器模式
適用場景小文檔、需頻繁修改、隨機查詢大文檔、單次順序讀取、記憶體受限大文檔、需條件提前終止、需寫入 XML

四、開發環境就緒清單

  • JDK 1.8+ (內建 JAXP 1.6、DOM/SAX/StAX 實作)
  • Eclipse / IntelliJ IDEA
  • 外部庫 (可選):dom4j、JAXB、XOM、VTD-XML (高效能非標準替代方案)

五、後續系列規劃

  1. (二) DOM 介面操作 XML:DocumentBuilder、Node 遍歷、建立/修改/刪除節點、XML 輸出格式化。
  2. (三) SAX 介面操作 XML:DefaultHandler、startElement/endElement/characters、屬性解析、大文檔效能測試。
  3. (四) dom4j 方式操作 XML:SAXReader、XPath 整合、靈活的節點操作、命名空間處理。
  4. (五) StAX 介面操作 XML:XMLInputFactory、XMLEventReader/XMLStreamReader、XMLStreamWriter 寫入。
  5. (六) JAXB 物件/XML 雙向轉換:註解映射、Marshaller/Unmarshaller、Schema 生成與驗證。
  6. (七) XPath 查詢 XML 文檔:XPathFactory、XPathExpression、五種回傳類型 (NODESET, BOOLEAN, NUMBER, STRING, NODE)、命名空間上下文。

選型建議速查

  • 配置檔、小型資料交換 → DOM / dom4j / JAXB
  • 海量日志分析、流式轉換 → SAX / StAX
  • 需 XPath 複雜查詢、頻繁修改 → dom4j / JDOM2
  • 物件序列化為主 → JAXB / Jackson XML
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved