java的SAX庫實現XML檔案的解析

2021-05-25 08:46:18 字數 1723 閱讀 7812

實現xml解析有很多庫,有dom,有sax,還有其它的。為了為後面android程式中解析xml做基礎,我只學習了sax解析xml;

概述:sax (****** api for xml)

和dom (document object model)

是當前兩個主要的

xml api

,幾乎所有商用的

xml

解析器都同時實現了這兩個介面。因此如果你的程式使用了

sax或者

dom apis

,那麼你的程式對

xml解析器是透明。

1. dom

以乙個分層的物件模型來對映

xml文件。而

sax將文件中的元素轉化為物件來處理。

2. dom

將文件載入到記憶體中處理,而

sax則相反,它可以檢測乙個即將到來的

xml流,由此並不需要所有的

xml**同時載入到記憶體中。

程式實現過程:

1.新建乙個工廠類spf;

2.從工廠類中產生乙個sax例項:即sax的解析類saxparser

3.從saxparser呼叫parse方法對xml檔案進行解析;

完整**如下:

測試xml:test.xml如下,放在工程檔案頂層就好了

測試結果如下:

~~~~解析文件開始~~~

startelement處標籤名:student

startelement處標籤名:person

id = 0001

*** = 男

startelement處標籤名:name

endelement處的值是:張三

startelement處標籤名:age

endelement處的值是:25

startelement處標籤名:college

endelement處的值是:工商管理學院

startelement處標籤名:telephone

endelement處的值是:6666666

endelement處的值是:

startelement處標籤名:person

id = 0002

*** = 女

startelement處標籤名:name

endelement處的值是:李四

startelement處標籤名:age

endelement處的值是:26

startelement處標籤名:college

endelement處的值是:醫學院

startelement處標籤名:telephone

endelement處的值是:8888888

endelement處的值是:

startelement處標籤名:person

id = 0003

startelement處標籤名:name

endelement處的值是:王五

startelement處標籤名:age

endelement處的值是:26

startelement處標籤名:college

endelement處的值是:醫學院

startelement處標籤名:telephone

endelement處的值是:8888888

endelement處的值是:

endelement處的值是:

~~~~解析文件結束~~~

共用2898187納秒

python使用sax實現xml解析

之前在使用xml解析的時候,在網上搜了很多教程,最終沒有能按照網上的教程實現需求。所以呢,只好自己去看原始碼,在sax的 init py下看到這麼一段 1 def parse source,handler,errorhandler errorhandler 2 parser make parser ...

SAX解析含特殊字元的xml文件(java)

一 不含自定義字元或含較少量的特殊字元 一般的特殊字元有五個 單引號 雙引號 這些字元如果直接出現在xml文件中,一般是不能解析出來的,如解析a b時會報錯。解決方法有兩個 1.用標記 2.轉義。1.用標記 對於含特殊字元的element用標記起來即可成功解析,如 該方法簡單但不實用,對於每個含特殊...

XML的解析 SAX方式

xml的解析兩種方式,我們來先看第一種,不需要在記憶體中排成樹型結構再去解析的。xml檔案如下 viewcontroller中實現 void viewdidload下面看核心部分 自定 析類 1.建立解析類,並傳入要解析的檔案 nsarray parsebookswithxmlfilename ns...