日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Android读写XML(上)

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android读写XML(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XML 經常用作 Internet 上的一種數據格式,其文件格式想必大家都比較清楚,在這里我結合Android平臺,來說明Android SDK提供的讀寫XML的package。

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

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

額外補充說明下,在android.util數據包中也提供了一個類Xml,不過這個類就是把以上package簡單封裝了下。

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

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

  • 優點:整個文檔樹都在內存當中,便于操作;支持刪除、修改、重新排列等多功能。
  • 缺點:將整個文檔調入內存(經常包含大量無用的節點),浪費時間和空間。
  • 使用場合:一旦解析了文檔還需要多次訪問這些數據,而且資源比較充足(如內存、CPU等)。

為了解決DOM解析XML引起的這些問題,出現了SAX。SAX解析XML文檔為事件驅動,詳細說明請閱讀Android讀寫XML(中)-SAX。當解析器發現元素開始、元素結束,文本、文檔的開始或者結束時,發送事件,在程序中編寫響應這些事件的代碼,其特點如下:

  • 優點:不用事先調入整個文檔,占用資源少。尤其在嵌入式環境中,極力推薦采用SAX進行解析XML文檔。
  • 缺點:不像DOM一樣將文檔長期駐留在內存,數據不是持久的,事件過后,如沒有保存數據,那么數據就會丟失。
  • 使用場合:機器性能有限,尤其是在嵌入式環境,如Android,極力推薦采用SAX進行解析XML文檔。

大多數時間,使用 SAX 是比較安全的,并且 Android 提供了一種傳統的 SAX 使用方法,以及一個便捷的 SAX 包裝器。如果XML文檔比較小,那么 DOM 可能是一種比較簡單的方法。如果XML文檔比較大,但只需要文檔的一部分,則 XML Pull 解析器可能是更為有效的方法。最后對于編寫 XML,Pull 解析器包也提供了一種便捷的方法,詳細說明請閱讀Android讀寫XML(下)--數據寫入XML文檔。因此,無論我們的 XML 需求如何,Android 都能在一定程度上滿足我們的需求。

下面我們詳細介紹采用DOM的方法,讀取XML文檔的思路,這基本上與XML的結構是完全一樣的。首先加載XML文檔(Document),然后獲取文檔的根結點(Element),然后獲取根結點中所有子節點的列表(NodeList),然后使用再獲取子節點列表中的需要讀取的結點。根據以上思路,簡要寫個讀取XML文件的例子如下:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import android.content.Context;
void ReadXML()
{
DocumentBuilderFactory docBuilderFactory
= null;
DocumentBuilder docBuilder
= null;
Document doc
= null;
try {
docBuilderFactory
= DocumentBuilderFactory.newInstance();
docBuilder
= docBuilderFactory.newDocumentBuilder();
//xml file 放到 assets目錄中的
doc = docBuilder.parse(context.getResources().getAssets().open(”weather.xml”));
//root element
Element root = doc.getDocumentElement();
//Do something here
//get a NodeList by tagname
NodeList nodeList = root.getElementsByTagName(”tag”);
for(int i =0;i< nodeList.getLength();i++)
{
Node nd
= nodeList.item(i);
//Read Node
}
}
catch (IOException e) {
}
catch (SAXException e) {
}
catch (ParserConfigurationException e) {
}
finally {
doc
= null;
docBuilder
= null;
docBuilderFactory
= null;
}
}

?

?

以上代碼比較簡單,就不在此詳細解析了。

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

對于XML的寫入,一方面可以采用前面介紹的這些package;另外一方面也可以按照XML的標準,將數據以字符串的形式直接寫入文件,這也是種很不錯的方法。在這里推薦IBM開源社區中一篇比較好的文章?Android 上使用 XML,有興趣的可以去深入學習下。

總結說明

XML作為一種簡單的文件格式,作為網絡上數據交換的基礎,而且得到了大部分數據庫的支持(直接將XML文件插入數據庫),XML文件的讀寫只是基礎,相信在以后的網絡、數據庫的開發中會經常使用。

轉載于:https://www.cnblogs.com/gaoyoubo/articles/1856675.html

總結

以上是生活随笔為你收集整理的Android读写XML(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。