XML解析器將一個未經處理的序列字符串作為輸入,并對它執行一些特定的操作。首先它檢查XML數據是否符合句法規則,確保開始標記與其有匹配的結束標記,并且沒有重疊的元素。大多數解析器還根據文檔類型定義(Document Type Definition,DTD)或XML Schema進行確認,核實其結構和內容是你所指定的。最后,解析輸出通過編程API提供對XML文檔內容的訪問。
有三種用于Java的流行XML解析技術:
文檔對象模型(Document Object Model,DOM),一個來自W3C的成熟標準。
用于XML的簡單API(Simple API for XML,SAX),第一個被廣泛采用的用Java編寫的XML API,是一個事實上的標準。
用于XML的數據流API(Streaming API for XML,StAX),JSR-173中采用的一個很有前途的新解析模型。
這些技術中的每一種都有其優點和缺點。
下面的XML文檔books.xml描述了一個書籍目錄,并在本文中作為例子使用:
<catalog> <!—Sample —> <book id="101"> <title>XML in a Nutshell</title> <author>Elliotte Rusty Harold, W. Scott Means</author> <price>39.95</price> </book> <book id="121"> <title>Who Moved My Cheese</title> <author>Spencer, M.D. Johnson, Kenneth H. Blanchard</author>