Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / 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. }