StAX解析器是一種“拉解析器(pull parser)”,與安裝事件處理器不同,你隻需使用下面這樣的基本循環來疊代所有的事件:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL2E2YzADOzIjMiNGMwMDMiVWNmNjNjVDN5QGN4czN5kjZ0gjNxU2Y28CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
解析器将産生下面的事件:
1)START_ELEMENT,元素名:font
2)CHARACTERS,内容:空白字元
3)START_ELEMENT,元素名:name
4)CHARACTERS,内容:Helvetica
5)END_ELEMENT,元素名:name
6)CHARACTERS,内容:空白字元
7)START_ELEMENT,元素名:size
8)CHARACTERS,内容:36
9)END_ELEMENT,元素名:size
10)CHARACTERS,内容:空白字元
11)END_ELEMENT,元素名:font
要分析這些屬性值,需要調用XMLStreamReader類中恰當的方法,例如:
它可以擷取目前元素的units屬性。
預設情況下,命名空間處理是啟用的,你可以通過像下面這樣修改工廠來使其無效:
程式清單3-9包含了用StAX解析器實作的網絡爬蟲程式。正如你所見,這段代碼比等效的SAX代碼要簡短了許多,因為此時我們不必操心事件處理問題。
程式清單3-9 stax/StAXTest.java