XML解析 PULL
来源:互联网 发布:杨春秋软件俱乐部 编辑:程序博客网 时间:2024/05/19 19:41
XML解析
SAX:
基于事件驱动,顺序读取,占用内存小,不能任意访问指定节点(不灵活),速度快适用于对内存要求高的设备使用
DOM:
基于树型结构存储,一次性把文档读入内存,占用内存较大,可以任意访问节点(灵活)适用于在服务器端开发使用
基于DOM的实现还有:
JDOM(API使用集合)
DOM4J(整体性能较好,Hibernate就是使用Dom4j实现配置文件的解析)
PULL解析:
PULL解析的机制与SAX解析相似,都是基于事件驱动不同的是:
SAX使用一个ContentHandler(内容处理器)来处理数据,解析器读取到相应的内容以回调
ContentHandler的相应方法的方式来处理。
而PULL是使用事件类型常量的标记的方式来处理数据。
使用PULL的步骤:
<1>创建一个PULL解析器对象:
XmlPullParser xmlPullParser = Xml.newPullParser();
<2>设置要解析的数据源
InputStream in = getResources().openRawResource(R.raw.person);xmlPullParser.setInput(in,"utf-8");
<3>获取事件类型
int eventType = xmlPullParser.getEventType();
<4>通过循环来处理不同的事件类型,结束条件为解析到文档的末尾
while(eventType!=XmlPullParser.END_DOCUMENT){ //..... eventType = xmlPullParser.next();}
示例:
private ArrayList<Person> parseXML() {// InputStream in = Xml.parse(); sax解析 InputStream in = getResources().openRawResource(R.raw.person); //创建PULL解析器对象 XmlPullParser xmlPullParser = Xml.newPullParser(); ArrayList<Person> persons = new ArrayList(); Person p = null; try { //设置要解析的数据源 xmlPullParser.setInput(in,"utf-8"); int eventType = xmlPullParser.getEventType(); while(eventType!=XmlPullParser.END_DOCUMENT){ try { switch (eventType){ case XmlPullParser.START_TAG: String tag = xmlPullParser.getName(); p = getPerson(xmlPullParser, p, tag); break; case XmlPullParser.END_TAG: if("person".equals(xmlPullParser.getName())){ persons.add(p); } break; } eventType = xmlPullParser.next(); } catch (IOException e) { e.printStackTrace(); } } } catch (XmlPullParserException e) { e.printStackTrace(); } return persons; } private Person getPerson(XmlPullParser xmlPullParser, Person p, String tag) throws XmlPullParserException, IOException { if("person".equals(tag)){ p = new Person(); p.setPersonid(xmlPullParser.getAttributeValue(xmlPullParser.getNamespace(),"personid")); }else if("name".equals(tag)){ p.setName(xmlPullParser.nextText()); } else if("age".equals(tag)){ p.setAge(Integer.parseInt(xmlPullParser.nextText())); } else if("sex".equals(tag)){ p.setSex(xmlPullParser.nextText()); } else if("tel".equals(tag)){ p.setTel(xmlPullParser.nextText()); } return p; }
使用PULL解析天气数据
http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather?theCityCode=北京
0 0
- XML解析Pull解析
- XML解析---PULL解析
- XML的pull解析
- Pull解析XML文件
- Pull详解解析xml
- Pull解析Xml方式
- Android Pull解析xml
- pull解析xml
- xml解析(PULL)
- Pull 解析xml
- android pull 解析xml
- pull解析xml
- PULL解析XML
- android PULL 解析XML
- Android Pull解析xml
- Pull解析xml文件
- Android Pull 解析 XML
- Android Pull 解析 XML
- 并查集
- Struts2之异常处理机制
- 《剑指offer》最小的K个数
- 视频格式与视频编码压缩标准 之间的关系
- socket编程---fgets和fputs函数使用理解
- XML解析 PULL
- hdoj1084What Is Your Grade?(结构体+sort)
- 运算符.强制类型转换等
- 拷贝构造函数
- mssql中的数据转存到Mysql中
- HDU 5733 tetrahedron (2016 Multi-University Training Contest 1 计算几何)
- mysql的索引
- 类设计原则
- kdtree c++版本