歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android解析XML文件

一、在Android應用中的XML文件來源

1、本地xml文件

本地XML文件可以放在應用根目錄assets文件夾、res/xml、res/raw、SDcard卡、應用的data目錄等;

除res/xml可直接通過getXml(int id)獲取XML文檔,返回一個解析器對象(XmlResourceParer:XmlResourceParer是XmlPullParser的子類),其它位置情況都可以獲取XML文檔,返回一個Inputstream對象,進行讀取數據,獲取方法分別如下:

a.在res/xml目錄下(推薦使用):

XmlResourceParser xmlParser = this.getResources().getXml(R.xml.XXX);

b.在res/xml、res/raw目錄下:

InputStream inputStream = this.getResources().openRawResource(R.xml.XXX); c.在assets文件夾下(本人測試發現通過此方法獲取的XML文檔不能帶有首行:<?xml version="1.0" encoding="utf-8"?>,否則解析報錯,具體原因未查明,知道原因請回復交流):

InputStream inputStream = getResources().getAssets().open(fileName);

d.在應用指定目錄下(SDcard,應用data目錄等):

// path路徑根據實際項目修改,此次獲取SDcard根目錄

  1. // path路徑根據實際項目修改,此次獲取SDcard根目錄   
  2. String path = Environment.getExternalStorageDirectory().toString();  
  3. File xmlFlie = new File(path+fileName);  
  4. InputStream inputStream = new FileInputStream(xmlFlie);  

2、通過url得到的xml文件

很多時候需要解析xml文件都用於客戶端與服務器之間的數據交互,比如解析google天氣預報信息,或自己項目內定的一些XML數據結構,其中通過URL,使用DefaultHTTPClient get請求獲取XML文件方法如下:

  1. /** 
  2.  * 讀取url的xml資源 轉成String 
  3.  * @param url 
  4.  * @return 返回 讀取url的xml字符串 
  5.  */  
  6. public String getStringByUrl(String url) {  
  7.     String outputString = "";  
  8.     // DefaultHttpClient   
  9.     DefaultHttpClient httpclient = new DefaultHttpClient();  
  10.     // HttpGet   
  11.     HttpGet httpget = new HttpGet(url);  
  12.     // ResponseHandler   
  13.     ResponseHandler<String> responseHandler = new BasicResponseHandler();  
  14.   
  15.     try {  
  16.         outputString = httpclient.execute(httpget, responseHandler);  
  17.         outputString = new String(outputString.getBytes("ISO-8859-1"), "utf-8");    // 解決中文亂碼   
  18.   
  19.         Log.i("HttpClientConnector""連接成功");  
  20.     } catch (Exception e) {  
  21.         Log.i("HttpClientConnector""連接失敗");  
  22.         e.printStackTrace();  
  23.     }  
  24.     httpclient.getConnectionManager().shutdown();  
  25.     return outputString;  
  26. }  
Copyright © Linux教程網 All Rights Reserved