天天看點

《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器

StAX解析器是一種“拉解析器(pull parser)”,與安裝事件處理器不同,你隻需使用下面這樣的基本循環來疊代所有的事件:

《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器

解析器将産生下面的事件:

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類中恰當的方法,例如:

《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器

它可以擷取目前元素的units屬性。

預設情況下,命名空間處理是啟用的,你可以通過像下面這樣修改工廠來使其無效:

《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器

程式清單3-9包含了用StAX解析器實作的網絡爬蟲程式。正如你所見,這段代碼比等效的SAX代碼要簡短了許多,因為此時我們不必操心事件處理問題。

程式清單3-9 stax/StAXTest.java

《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器
《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器
《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器
《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器
《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器
《Java核心技術 卷Ⅱ 進階特性(原書第10版)》一3.6.2 使用StAX解析器