国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Android讀寫XML(上)——package說明

XML 經(jīng)常用作 Internet 上的一種數(shù)據(jù)格式,其文件格式想必大家都比較清楚,在這里我結(jié)合Android平臺(tái),來說明Android SDK提供的讀寫XML的package。

首先介紹下Android SDK與Java SDK在讀寫XML文件方面,數(shù)據(jù)包之間的關(guān)系。Android 平臺(tái)最大的一個(gè)優(yōu)勢(shì)在于它利用了 Java 編程語言。Android SDK 并未向標(biāo)準(zhǔn) Java Runtime Environment (JRE) 提供一切可用功能,但它支持其中很大一部分功能。Java 平臺(tái)支持通過許多不同的方式來使用 XML,并且大多數(shù)與 XML 相關(guān)的 Java API 在 Android 上得到了完全支持。舉例來說,Java 的 Simple API for XML (SAX) 和 Document Object Model (DOM) 在 Android 上都是可用的,這些 API 多年以來一直都是 Java 技術(shù)的一部分,較新的 Streaming API for XML (StAX) 在 Android 中并不可用。但是, Android 提供了一個(gè)功能相當(dāng)?shù)膸?。最后,Java XML Binding API 在 Android 中也不可用,這個(gè) API 已確定可以在 Android 中實(shí)現(xiàn)。Android SDK提供了如下package來支持XML的讀寫:

包  功能介紹
javax.xml  根據(jù) XML 規(guī)范定義核心 XML 常量和功能。
javax.xml.parsers  提供DOM和SAX方法解析XML文檔
org.w3c.dom  W3C提供的使用DOM方法讀取XML
org.xml.sax  提供核心SAX  APIs
org.xmlpull.v1  

額外補(bǔ)充說明下,在android.util 數(shù)據(jù)包中也提供了一個(gè)類Xml,不過這個(gè)類就是把以上package簡(jiǎn)單封裝了下。

讀取XML主要有2種方法:DOM與SAX(Simple API for XML),在這里對(duì)這2種方法分別加以說明。

DOM(文檔對(duì)象模型),為XML文檔的解析定義了一組接口,解析器讀入整個(gè)文檔,然后構(gòu)造一個(gè)駐留內(nèi)存的樹結(jié)構(gòu),然后代碼就可以使用DOM接口來操組整個(gè)樹結(jié)構(gòu),其他點(diǎn)如下:

優(yōu)點(diǎn):整個(gè)文檔樹都在內(nèi)存當(dāng)中,便于操作;支持刪除、修改、重新排列等多功能。
缺點(diǎn):將整個(gè)文檔調(diào)入內(nèi)存(經(jīng)常包含大量無用的節(jié)點(diǎn)),浪費(fèi)時(shí)間和空間。
使用場(chǎng)合:一旦解析了文檔還需要多次訪問這些數(shù)據(jù),而且資源比較充足(如內(nèi)存、CPU等)。
為了解決DOM解析XML引起的這些問題,出現(xiàn)了SAX。SAX解析XML文檔為事件驅(qū)動(dòng),詳細(xì)說明請(qǐng)閱讀Android讀寫XML(中)–SAX 。當(dāng)解析器發(fā)現(xiàn)元素開始、元素結(jié)束,文本、文檔的開始或者結(jié)束時(shí),發(fā)送事件,在程序中編寫響應(yīng)這些事件的代碼,其特點(diǎn)如下:

優(yōu)點(diǎn):不用事先調(diào)入整個(gè)文檔,占用資源少。尤其在嵌入式環(huán)境中,極力推薦采用SAX進(jìn)行解析XML文檔。
缺點(diǎn):不像DOM一樣將文檔長(zhǎng)期駐留在內(nèi)存,數(shù)據(jù)不是持久的,事件過后,如沒有保存數(shù)據(jù),那么數(shù)據(jù)就會(huì)丟失。
使用場(chǎng)合:機(jī)器性能有限,尤其是在嵌入式環(huán)境,如Android,極力推薦采用SAX進(jìn)行解析XML文檔。
大多數(shù)時(shí)間,使用 SAX 是比較安全的,并且 Android 提供了一種傳統(tǒng)的 SAX 使用方法,以及一個(gè)便捷的 SAX 包裝器。如果XML文檔比較小,那么 DOM 可能是一種比較簡(jiǎn)單的方法。如果XML文檔比較大,但只需要文檔的一部分,則 XML Pull 解析器可能是更為有效的方法。最后對(duì)于編寫 XML,Pull 解析器包也提供了一種便捷的方法,詳細(xì)說明請(qǐng)閱讀Android讀寫XML(下)——數(shù)據(jù)寫入XML文檔 。因此,無論我們的 XML 需求如何,Android 都能在一定程度上滿足我們的需求。

下面我們?cè)敿?xì)介紹采用DOM的方法,讀取XML文檔的思路,這基本上與XML的結(jié)構(gòu)是完全一樣的。首先加載XML文檔(Document),然后獲取文檔的根結(jié)點(diǎn)(Element),然后獲取根結(jié)點(diǎn)中所有子節(jié)點(diǎn)的列表(NodeList),然后使用再獲取子節(jié)點(diǎn)列表中的需要讀取的結(jié)點(diǎn)。根據(jù)以上思路,簡(jiǎn)要寫個(gè)讀取XML文件的例子如下:
 

  1. import javax.xml.parsers.DocumentBuilder;  
  2. import javax.xml.parsers.DocumentBuilderFactory;  
  3. import javax.xml.parsers.ParserConfigurationException;  
  4. import org.w3c.dom.Document;  
  5. import org.w3c.dom.Element;  
  6. import org.w3c.dom.NodeList;  
  7. import org.xml.sax.SAXException;  
  8. import android.content.Context;  
  9. void ReadXML()  
  10. {  
  11. DocumentBuilderFactory docBuilderFactory = null;  
  12. DocumentBuilder docBuilder = null;  
  13. Document doc = null;  
  14. try {  
  15. docBuilderFactory = DocumentBuilderFactory.newInstance();  
  16. docBuilder = docBuilderFactory.newDocumentBuilder();  
  17. //xml file 放到 assets目錄中的  
  18. doc = docBuilder.parse(context.getResources().getAssets().open(”weather.xml”));  
  19. //root element  
  20. Element root = doc.getDocumentElement();  
  21. //Do something here  
  22. //get a NodeList by tagname  
  23. NodeList nodeList = root.getElementsByTagName(”tag”);  
  24. for(int i =0;i< nodeList.getLength();i++)  
  25. {  
  26. Node nd = nodeList.item(i);  
  27. //Read Node  
  28. }  
  29. catch (IOException e) {  
  30. catch (SAXException e) {  
  31. catch (ParserConfigurationException e) {  
  32. finally {  
  33. doc = null;  
  34. docBuilder = null;  
  35. docBuilderFactory = null;  
  36. }  
  37. }  

以上代碼比較簡(jiǎn)單,就不在此詳細(xì)解析了。

采用DOM讀取XML文件,需要加載整個(gè)XML文件,在XML文件比較大的情況下,會(huì)導(dǎo)致Android設(shè)備內(nèi)存緊張,為了避免這個(gè)問題,也可以采用SAX的方法讀取XML文件,不過SAX對(duì)結(jié)點(diǎn)的排序、增加結(jié)點(diǎn)等方面的操作相比DOM就有些復(fù)雜了。根據(jù)XML文件大小、數(shù)據(jù)處理的需求,選擇合適的讀取的方法。

對(duì)于XML的寫入,一方面可以采用前面介紹的這些package;另外一方面也可以按照XML的標(biāo)準(zhǔn),將數(shù)據(jù)以字符串的形式直接寫入文件,這也是種很不錯(cuò)的方法。在這里推薦IBM開源社區(qū)中一篇比較好的文章 Android 上使用 XML ,有興趣的可以去深入學(xué)習(xí)下。

總結(jié)說明
XML作為一種簡(jiǎn)單的文件格式,作為網(wǎng)絡(luò)上數(shù)據(jù)交換的基礎(chǔ),而且得到了大部分?jǐn)?shù)據(jù)庫的支持(直接將XML文件插入數(shù)據(jù)庫),XML文件的讀寫只是基礎(chǔ),相信在以后的網(wǎng)絡(luò)、數(shù)據(jù)庫的開發(fā)中會(huì)經(jīng)常使用。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android實(shí)現(xiàn)XML解析技術(shù)
Android使用DOM讀取XML文件
常見的XML的兩種解析方法
Java程序員從笨鳥到菜鳥之(二十六)XML之DOM和SAX解析
Java將DOM文檔和XML文件互相轉(zhuǎn)換
使用Vitamio打造自己的Android萬能播放器(9)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服