SAX(針對XML的簡單API)是基於事件為XML文件的解析器。不像DOM解析器,SAX解析器建立沒有解析樹。 SAX是一個流介面用於XML的,這意味著使用SAX應用接收事件通知有關XML文件被處理的元素,屬性,在按順序每次開始在文件的頂部,並與所述閉合結束根元素。
讀取XML檔案從上到下,構成一個結構完整的XML文件的標記
令牌以相同的順序進行處理,它們出現在文件中
報告應用程式,因為它們所出現解析器遇到標記的特性
應用程式提供了必須的解析器註冊的“事件”處理程式
作為標記標識,在處理程式回撥方法相關資訊呼叫
應該使用SAX解析器的時候:
可以在XML文件從上往下處理以線性方式
該檔案並不深層次巢狀
處理一個非常大的XML文件,DOM樹會占用太多的記憶體。典型DOM的實現使用10位元組的儲存器以表示XML的一個位元組
解決的問題涉及的XML文件的一部分
資料是可用的,只要它是由解析器看出,這樣的SAX可以很好地用於到達流的XML文件
它是在一個只進入處理隨機存取方式XML文件
如果需要跟蹤的資料分析器已經看到或更改專案的順序,必須自已編寫程式碼和資料儲存
此介面指定SAX解析器用來通知XML文件,已經看到部件應用程式的回撥方法。
void startDocument() - 呼叫在一個檔案的開頭。
void endDocument() - 呼叫在一個檔案的末尾。
void startElement(String uri, String localName, String qName, Attributes atts) - 呼叫在一個元素的開頭。
void endElement(String uri, String localName,String qName) - 呼叫在一個元件的末端。
void characters(char[] ch, int start, int length) - 字元資料出現時呼叫。
void ignorableWhitespace( char[] ch, int start, int length) - 當DTD是當前和忽略空白遇到時呼叫。
void processingInstruction(String target, String data) - 當處理指令的認可時呼叫。
void setDocumentLocator(Locator locator)) - 提供可用於識別文件中的位置的定位器。
void skippedEntity(String name) - 一個尚未解決實體遇到時呼叫。
void startPrefixMapping(String prefix, String uri) - 當一個新的名稱空間的對映定義呼叫。
void endPrefixMapping(String prefix) - 當一個名稱空間定義結束其範圍時呼叫。
這種介面指定用於處理連線到一個元素的屬性的方法。
int getLength() - 返回屬性的數目。
String getQName(int index)
String getValue(int index)
String getValue(String qname)