一、在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;
- }