第一篇博客——XML學習之旅一XML解析器
學習了這么久的java,也一直想寫一點東西,分享一下自己的學習經歷。因為一直沒有想到好寫的主題,所以遲遲沒有動筆。直到前幾天,開始著手做一個考試系統項目時,因為需要用到xml解析器(將試題從一個xml的試題文件中解析出來),在這幾天對幾種常用的xml解析器進行了一次完整地學習。blogjava是一個很好的java博客網站,也是一個很好的學習交流平臺,經??梢栽谏厦婵吹胶芏鄡炐愕奈恼拢缇图尤隻logjava的沖動。今天終于在blogjava上注冊一個自己的博客,從今天開始我的第一篇博客吧,我把我這幾天學習xml解析器做了一個總結,作為我的第一篇博客——XML學習之旅一幾種常用XML解析器的比較,與大家分享一下吧。
XML在java中的使用越來越廣泛,掌握幾種常用的XML解析器十分有必要。目前XML主要的解器有DOM,SAX和JDOM.
DOM是一套為合法的Well-Formed文件設計的API應用程序接口,它同時定義了這些文件的邏輯結構,訪問和操作方法.由W3C制定,目標是提供一個可以通用于各種程序語言,操作系統和應用程序的API,所以DOM具有極高的兼容性.
SAX(Simple Application interface for XML)是一個為基于事件XML解析器定義的,可以免費獲得的,與平臺語言無關的API,它允許程序和腳本動態的訪問和更新文檔的內容,結構和風格.
JDOM是兩位著名的 Java 開發人員兼作者,Brett Mclaughlin 和 Jason Hunter 的創作成果,它是一個開源項目,它基于樹型結構,利用純Java的技術對XML文件實現解析,生成,序列化以及其他許多操作.JDOM直接為Java編程服務,它利用強有力的Java語言的諸多特性,把SAX和DOM的功能有效地結合起來,在使用設計上盡可能地隱藏原來使用過程中的復雜性.
對于DOM和SAX在API中能直接找到,其中包含了三個軟件包:
·org.w3c.dom ,W3C 推薦的用于 XML 標準規劃文檔對象模型的 Java 工具
·org.xml.sax ,用于對 XML 進行語法分析的事件驅動的簡單 API
·javax.xml.parsers ,工廠化工具,允許應用程序開發人員獲得并配置特殊的語法分析器工具 JDOM 能夠替換
JDOM是一個開源項目,使用時需要導入jdom.jar到庫中。相對于直接使用API中的解析器,JDOM使用起來要更簡單得多。JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter開發出來,以彌補DOM及SAX在實際應用當中的不足之處。下面我們通過一個實際的例子,分別使用兩種方式實現解析xml的試題文件來比較兩者的不同。
本次需要解析的XML文件Item.xml
<?xml version="1.0" encoding="UTF-8"?>
<list>
<item id="1">
<answer>C</answer>
<level>1</level>
<question>在下列存儲器中,訪問速度最快的是:_______
A) 硬盤存儲器
B) 軟盤存儲器
C) 半導體RAM(內存儲器)
D) 磁帶存儲器</question>
<questionType>基礎題</questionType>
</item>
<item id="2">
<answer>D</answer>
<level>1</level>
<question>下面是關于微型計算機操作的四條敘述,其中正確的一條是:_______
A)系統不會用輸入日期做任何事,可以隨便輸入過去一個日期作當天日期
B) 用戶每鍵入一個字符時,DOS就立即將其讀取并識別之
C) 啟動DOS系統時,如不想輸入新時間,用戶只按下任意鍵就行
D)軟盤可以在切斷電源之前取出來,也可以在切斷電源之后取出來</question>
<questionType>基礎題</questionType>
</item>
</list>
同過使用DOM和SAX對Item.xml進行解析DomExample.java

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

運行結果:
run-single:
===========================================
1
C
1
在下列存儲器中,訪問速度最快的是:_______
A) 硬盤存儲器
B) 軟盤存儲器
C) 半導體RAM(內存儲器)
D) 磁帶存儲器
基礎題
2
D
1
下面是關于微型計算機操作的四條敘述,其中正確的一條是:_______
A)系統不會用輸入日期做任何事,可以隨便輸入過去一個日期作當天日期
B) 用戶每鍵入一個字符時,DOS就立即將其讀取并識別之
C) 啟動DOS系統時,如不想輸入新時間,用戶只按下任意鍵就行
D)軟盤可以在切斷電源之前取出來,也可以在切斷電源之后取出來
基礎題
===========================================
BUILD SUCCESSFUL (total time: 0 seconds)
同過使用JDOM對Item.xml進行解析JDomExample.java

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

run-single:
===========================================
[Attribute: id="1"]
C
1
在下列存儲器中,訪問速度最快的是:_______
A) 硬盤存儲器
B) 軟盤存儲器
C) 半導體RAM(內存儲器)
D) 磁帶存儲器
基礎題
[Attribute: id="2"]
D
1
下面是關于微型計算機操作的四條敘述,其中正確的一條是:_______
A)系統不會用輸入日期做任何事,可以隨便輸入過去一個日期作當天日期
B) 用戶每鍵入一個字符時,DOS就立即將其讀取并識別之
C) 啟動DOS系統時,如不想輸入新時間,用戶只按下任意鍵就行
D)軟盤可以在切斷電源之前取出來,也可以在切斷電源之后取出來
基礎題
===========================================
BUILD SUCCESSFUL (total time: 0 seconds)
通過上面兩個文件比較,我們可以明顯的看出區別。JDOM解析要比使用DOM和SAX進行解析使用起來更簡單,完成同樣的功能用JDOM比使用DOM和SAX要少很多代碼(請看DomExample.java和JDomExample.java文件),而且使用JDOM的代碼看起來更為清晰。JDOM 直接為JAVA編程服務。它利用更為強有力的JAVA語言的諸多特性(方法重載、集合概念以及映射),把SAX和DOM的功能有效地結合起來。 Jdom是用Java語言讀、寫、操作XML的新API函數。Jason Hunter 和 Brett McLaughlin公開發布了它的1.0版本。在直覺、簡單和高效的前提下,這些API函數被最大限度的優化。在接下來的篇幅里將介紹怎么用Jdom去讀寫一個已經存在的XML文檔。在使用設計上盡可能地隱藏原來使用XML過程中的復雜性。利用JDOM處理XML文檔將是一件輕松、簡單的事。
posted on 2008-05-02 01:41 天山茗客 閱讀(588) 評論(2) 編輯 收藏 所屬分類: XML