歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android解析XML文件

Android解析XML文件

日期:2017/3/1 10:14:59   编辑:Linux編程

一、在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. try {
  15. outputString = httpclient.execute(httpget, responseHandler);
  16. outputString = new String(outputString.getBytes("ISO-8859-1"), "utf-8"); // 解決中文亂碼
  17. Log.i("HttpClientConnector", "連接成功");
  18. } catch (Exception e) {
  19. Log.i("HttpClientConnector", "連接失敗");
  20. e.printStackTrace();
  21. }
  22. httpclient.getConnectionManager().shutdown();
  23. return outputString;
  24. }
Copyright © Linux教程網 All Rights Reserved