android中經常會遇到要讀取或者寫入一些xml檔案,如某些**的請求返回就是xml格式的。這樣,我們得到檔案流可以對xml檔案進行解析,進而得到裡面的一些我們所需要的引數。xml檔案的解析方式有三種:dom(document object model)、sax(****** api for xml)和android自帶的pull解析。
dom解析xml檔案時,會將xml檔案的所有內容讀取到記憶體中,然後使用dom api遍歷xml樹、檢索所需的資料。使用dom操作xml起來比較直觀,實現也比較簡單。但是,因為dom需要將xml檔案的所有內容讀取到記憶體中,所以記憶體的消耗比較大,特別對於執行android的移動裝置來說,因為裝置的資源比較寶貴,所以我們一般還是採用sax方式或者android自帶的pull方式。sax解析xml檔案採用的是事件驅動,也就是說,它並不需要解析完整個文件,在按內容順序解析文件的過程中,sax會判斷當前讀到的字元是否合法xml語法中的某部分,如果符合就會觸發事件。這些事件定義在contenthandler介面中。pull方式和sax比較類似,也是我用的最多的一種。pull提供了開始元素(start_document,start_tag)和結束元素事件(end_document,end_tag),使用parser.next()可以進入下乙個元素並觸發相應事件。
看一段簡單的**:
public void readxml()
else if ("age".equals(xparser.getname()))
break;
}eventcode = xparser.next();// 指標轉到下乙個位置
}} catch (ioexception e)
catch (xmlpullparserexception e)
}
上述**很容易就能懂,即是從檔案頭到檔案尾進行判斷,遇到和自己需要的元素相等的時候,取出其中的value值。
上面是讀乙個xml檔案並且解析,讓我們再來看看怎麼寫乙個xml檔案。看**,都有清楚的注釋:
public string writexml(string str1, string str2)
catch (illegalargumentexception e)
catch (illegalstateexception e)
catch (ioexception e)
return null;
}
下圖是上面方法的返回值:
android下使用dom讀寫xml檔案
上篇我們使用xmlserializer建立的xml檔案,發現了些問題,那樣的xml檔案是不標準的,只能自己建立自己讀,而不能供給譬如opencv的filestorage來讀取。而且,opencv能夠讀取的xml檔案還有著其他嚴格的格式控制,下面簡單介紹一下。如下所示 90 其中 是必須要有的,貌似是...
讀寫XML檔案
1.將xml資料寫入檔案 寫入xml 傳入obj得型別 儲存得檔案路徑 要儲存得資料 public void writeobjecttofile string filename,t obj 2.從檔案中讀取xml資料,並序列化為物件 從檔案中讀取資料到xml檔案 返回型別 讀取的檔案路徑 publi...
讀寫XML檔案
本文將會涉及3個方面的內容 1 訪問xml檔案 2 xml文件物件模型 3 xml和dataset 這裡我們先介紹操作xml檔案的兩個物件 xmltextreader和xmltextwriter 開啟和讀取xml檔案使用到的物件就是xmltextreader物件。下面的例子開啟了與程式在同一路徑下的...