andorid讀取xml檔案内容方法有三種 sax dom pull,其中 pull是android自帶的
1.先認識一下xml檔案中的些術語
xml中的标簽和内容都可以叫做節點,其中的persons person name age 這些都叫做元素(element).而像李明 25 這些值叫做文本節點.那麼有個問題 中<persons>到<person>之間的是什麼,什麼都沒有? 答案是他也是節點,是文本節點,你會說他裡面什麼都沒有啊,錯了,它有回車和空格.這個在sax解析xml中你debug一下就會發現.回車和空格(或者是tab)是會被讀取出來的.id是屬性.
2.sax
sax是采用事件驅動,就是說他不需要完全讀完xml檔案,他是讀到一個節點就解析一個節點是否符合xml文法,如果符合就調用相對應的方法其實就是回調方法,并且沒有記憶功能.下面提到的這些方法都是在ContentHander()接口中的方法.
startDocumnet() :當開始解析xml檔案的聲明的時候就會觸發這個事件, 可以做一些初始化的工作
startElement() 當開始解析元素的開始标簽的時候,就會觸發這個事件
characters() 當讀到文本元素的時候要觸發這個事件.
endElement() 當讀到結束标簽的時候 就會觸發這個事件
sax就是這樣按照順序來解析的.
3.sax讀取xml檔案舉例
3-1建立一個項目 ReadXml
3-2将xml檔案拷貝到根目錄下.
可以看出這個xml檔案中有一個可以抽象出來的對象 就是person 屬性有id name age
那麼我們就建立一個bean
3-3:建立bean
3-4:遵循mvc的架構,我們建立一個service用來讀取xml
sp.parse(inStream, handler);
這句可以看出xml檔案是以流的形式傳進來的,參數handler就是回調函數的執行個體,當sax解析器解析xml檔案的時候當遇到符合xml的内容就會去handle類中調用對應的上面提到的方法.那我們建立這個XMLContentHandler 就要求這個類要實作ContentHandler()這個接口,但是這個接口中有很多需要實作的方法.sax提供了一個DefaultHandler接口 隻要實作這個接口中你感興趣的方法就可以了.
3-5:建立XMLContentHandler 并完成讀取時的事件的實作 注意看注釋
3-6:寫個測試類來實驗 将xml檔案裝載入 然後讀取
完成;
activity在源碼中