PULL解析XML
来源:互联网 发布:淘宝上架宝贝教程 手机 编辑:程序博客网 时间:2024/06/17 03:51
一、书上内容
PULL解析XML的方式与SAX解析XML的方式一样,它也是基于事件驱动的。使用PULL解析器解析XML文件时应注意以下几点:
(1)通过Xml.newPullParser()获得解析器。
(2)通过pullParser.setInput(inputStream, "utf-8")设置输入流以及编码。
(3)通过pullParser.next()获取下一元素并触发相应事件。
XMLPullParser中定义了常量来标识各种解析事件。
(1)
常量:START_DOCUMENT
常量所标识的解析事件:读取到XML的声明返回
(2)
常量:END_DOCUMENT
常量所标识的解析事件:读取到XML的结束返回
(3)
常量:START_TAG
常量所标识的解析事件:读取到XML的开始标签返回
(4)
常量:END_TAG
常量所标识的解析事件:读取到XML的结束标签返回
(5)
常量:TEXT
常量所标识的解析事件:读取到XML的文本返回
二、自己项目
1、解析步骤
2、项目代码
//MainActivity.java
//MyPullParser.java
//Person.java
//Persons.xml
PULL解析XML的方式与SAX解析XML的方式一样,它也是基于事件驱动的。使用PULL解析器解析XML文件时应注意以下几点:
(1)通过Xml.newPullParser()获得解析器。
(2)通过pullParser.setInput(inputStream, "utf-8")设置输入流以及编码。
(3)通过pullParser.next()获取下一元素并触发相应事件。
XMLPullParser中定义了常量来标识各种解析事件。
(1)
常量:START_DOCUMENT
常量所标识的解析事件:读取到XML的声明返回
(2)
常量:END_DOCUMENT
常量所标识的解析事件:读取到XML的结束返回
(3)
常量:START_TAG
常量所标识的解析事件:读取到XML的开始标签返回
(4)
常量:END_TAG
常量所标识的解析事件:读取到XML的结束标签返回
(5)
常量:TEXT
常量所标识的解析事件:读取到XML的文本返回
二、自己项目
1、解析步骤
XmlPullParser pullParser=Xml.newPullParser();pullParser.setInput(inputStream, "utf-8");int event=pullParser.getEventType();while(event!=XmlPullParser.END_DOCUMENT){switch(event){case XmlPullParser.START_DOCUMENT:break;case XmlPullParser.START_TAG:break;case XmlPullParser.TEXT:break;case XmlPullParser.END_TAG:break;case XmlPullParser.END_DOCUMENT:break;}event=pullParser.next();}
2、项目代码
//MainActivity.java
InputStream inputStream=MainActivity.class.getClassLoader().getResourceAsStream("Persons.xml");ArrayList<Person> persons=MyPullParser.getList(inputStream);for(int i=0;i<persons.size();i++){Person person=persons.get(i);tv_parse.append("\nid="+person.getId()+";age="+person.getAge()+";name="+person.getName());}
//MyPullParser.java
public class MyPullParser {static Person person;static ArrayList<Person> persons;static String element;static final String TAG="myPull";public static ArrayList<Person>getList(InputStream inputStream) {XmlPullParser pullParser=Xml.newPullParser();try {pullParser.setInput(inputStream, "utf-8");int event=pullParser.getEventType();while(event!=XmlPullParser.END_DOCUMENT){switch(event){case XmlPullParser.START_DOCUMENT:persons=new ArrayList<Person>();Log.i(TAG,"now begin to parse document");break; case XmlPullParser.START_TAG:element=pullParser.getName();if(element.equals("Person")){person=new Person();String id=pullParser.getAttributeValue(0);person.setId(id);}Log.i(TAG, "now begin to parse the element value:"+element);break;case XmlPullParser.TEXT:String s=pullParser.getText().trim();if(!s.equals("")){if(element.equals("name")){person .setName(s);}else if(element.equals("age")){person .setAge(s);}Log.i(TAG, "now parse the element value:"+s);}break;case XmlPullParser.END_TAG:element=pullParser.getName();if(element.equals("Person")){persons.add(person);person=null;}Log.i(TAG, "now end the element value:"+element);break;case XmlPullParser.END_DOCUMENT:Log.i(TAG,"now end the document");break;}event=pullParser.next();}} catch (XmlPullParserException e) {e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return persons;}}
//Person.java
public class Person {String id;String name;String age;public Person() {super();id="0";name="王二";age="50";}public Person(String id, String name, String age) {super();this.id = id;this.name = name;this.age = age;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}}
//Persons.xml
<Persons> <Person id="1"> <name>张三</name> <age>20</age> </Person> <Person id="2"> <name>李四</name> <age>30</age> </Person> <Person id="3"> <name>王五</name> <age>30</age> </Person></Persons>
阅读全文
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
- node 提示 module.js:471 throw err
- windows下安装pygame
- POJ-3268-Disease Management-(最短路径spfa)
- Java批量插入Oracle语句执行过程
- iOS 二维码生成
- PULL解析XML
- 银联支付
- String Shifting- 今日头条校招2016-09-28在线编程题
- Android手势处理框架-android gesture detectors Framework
- ELK+Kafka 企业日志收集平台(二)
- glassfish安装部署
- ARM NEON 编程系列6——ARM Neon 指令 解释
- C#二维数组拷贝到另一个二维数组
- Java中遍历map的四种方式