Android网络编程之pull解析xml
2015-02-19 22:22
555 查看
PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用PULL解析器,Android官方推荐开发者们使用Pull解析技术。
第二步:创建一个XmlPullParser对象,用于对文件进行解析
第三步:通过parser.setInput()方法,将文件和文件解析器关联起来。
第四步:调用getEventType();方法正式开始解析。
第五步:在while循环中处理xml
本文永久链接http://itxuye.com/android-network-pull-xml.html,转载请注明出处,欢迎交流讨论。
pull解析的代码步骤
第一步:我们需要先定义一个xml文件(当然也可以是从网络上获取的xml文件)第二步:创建一个XmlPullParser对象,用于对文件进行解析
第三步:通过parser.setInput()方法,将文件和文件解析器关联起来。
第四步:调用getEventType();方法正式开始解析。
第五步:在while循环中处理xml
具体实现
我在apache http sever(这个可以去apache官网去下载或者直接搜索,我觉得非常好用)临时搭建的服务器内存储了一个test.xml文件。<note> <to>George</to> <from>John</from> <heading>Reminder</heading> </note>
准备Http工具类
import android.util.Log; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; /** * Created by itxuye on 2015/2/8. */ public class HttpUtils { HttpUtils() { } public static String RequestUrl(String Url) { String xml_data = ""; try { HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(Url); HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == 200) { //请求响应成功 HttpEntity httpEntity = httpResponse.getEntity(); xml_data = EntityUtils.toString(httpEntity); return xml_data; } } catch (Exception ex) { Log.i("MainActivity", "读取不到"); } return null; } }
创建解析方法
private void parseXMLWithPull(String xml_data_) { try { //创建XmlPullParser,有两种方式 //方式一:使用工厂类XmlPullParserFactory XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser = factory.newPullParser(); //方式二:使用Android提供的实用工具类android.util.Xml //XmlPullParser xmlPullParser = Xml.newPullParser(); // 通过parser.setInput()方法,将文件和文件解析器关联起来。 xmlPullParser.setInput(new StringReader(xml_data_)); //产生第一个事件 int eventType = xmlPullParser.getEventType(); String to = ""; String from = ""; String heading = ""; while (eventType != XmlPullParser.END_DOCUMENT) { String nodename = xmlPullParser.getName(); switch (eventType) { //判断当前事件是否是标签元素开始事件 case XmlPullParser.START_TAG: { if ("to".equals(nodename)) { to = xmlPullParser.nextText(); } else if ("from".equals(nodename)) { from = xmlPullParser.nextText(); } else if ("heading".equals(nodename)) { heading = xmlPullParser.nextText(); } break; } case XmlPullParser.END_TAG: { if ("note".equals(nodename)) { Log.i(TAG, "to" + to); Log.i(TAG, "from" + from); Log.i(TAG, "heading" + heading); } break; } default: break; } //进入下一个元素并触发相应事件 eventType = xmlPullParser.next(); } } catch (Exception ex) { Log.i("MainActivity", "解析错误"); } }
输出结果:
1431-1448/com.itxuye.Pull I/MainActivity﹕ toGeorge 1431-1448/com.itxuye.Pull I/MainActivity﹕ fromJohn 1431-1448/com.itxuye.Pull I/MainActivity﹕ headingReminder
参考阅读:
《安卓 第一行代码》代码完整地址:
https://github.com/itxuye/Pull_xml本文永久链接http://itxuye.com/android-network-pull-xml.html,转载请注明出处,欢迎交流讨论。
相关文章推荐
- 核心技术篇:5.android网络编程之pull解析xml
- Android网络编程之三:XmlPullParser解析Xml文件
- Android编程解析XML方法详解(SAX,DOM与PULL)
- Android-DOM、SAX、PULL解析网络xml
- Android编程解析XML文件的方法详解【基于XmlPullParser】
- Android 网络编程之 XML 和 JSON 解析
- Android网络编程之sax解析xml
- Android网络编程之Pull解析XML文件
- 核心技术篇:3.android网络编程之dom解析xml
- Android 通过Dom, Sax, Pull解析网络xml数据
- android之网络编程解析XML
- Android网络编程-----从服务器端获取xml数据并解析
- android JSON与XmlPullParse解析网络连接数据
- Android-通过网络获取xml文件使用pull解析得到服务器中的信息(新闻客户端)
- Android XML解析Pull方式———解析网络数据示例
- 【Android网络开发の3】XML之PULL方式 解析和生成XML文件
- :Android网络编程--XML之解析方式:SAX
- Android 中使用XmlPullParser解析网络XML文件
- 网络编程之android后台取服务器端xml解析之dom解析
- android使用pull的方式解析xml