實現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...