一、在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根目錄
- // path路徑根據實際項目修改,此次獲取SDcard根目錄
- String path = Environment.getExternalStorageDirectory().toString();
- File xmlFlie = new File(path+fileName);
- InputStream inputStream = new FileInputStream(xmlFlie);
2、通過url得到的xml文件
很多時候需要解析xml文件都用於客戶端與服務器之間的數據交互,比如解析google天氣預報信息,或自己項目內定的一些XML數據結構,其中通過URL,使用DefaultHTTPClient get請求獲取XML文件方法如下:
- /**
- * 讀取url的xml資源 轉成String
- * @param url
- * @return 返回 讀取url的xml字符串
- */
- public String getStringByUrl(String url) {
- String outputString = "";
- // DefaultHttpClient
- DefaultHttpClient httpclient = new DefaultHttpClient();
- // HttpGet
- HttpGet httpget = new HttpGet(url);
- // ResponseHandler
- ResponseHandler<String> responseHandler = new BasicResponseHandler();
-
- try {
- outputString = httpclient.execute(httpget, responseHandler);
- outputString = new String(outputString.getBytes("ISO-8859-1"), "utf-8"); // 解決中文亂碼
-
- Log.i("HttpClientConnector", "連接成功");
- } catch (Exception e) {
- Log.i("HttpClientConnector", "連接失敗");
- e.printStackTrace();
- }
- httpclient.getConnectionManager().shutdown();
- return outputString;
- }