解析Xml有三种方式可选,sax ,dom ,pull ,,各有各的优点,但在android上是不推荐使用DOM来解析的
一般都用SAX和PULL 这两个性能相近, SAX的解析方式大家可以去看MARS的教程 讲的也比较好喔
PULL的话我个人觉得处理事件比较简单,所以就给不懂的同学详细讲讲,嘿嘿....希望大家都能明白
感谢 传智的张老师,黎老师, 感谢勇军哥
首先给大家看看我的笔记
那么我们就开始吧
很简单,这是我们要解析的xml文件,直接放在src之下
- <?xml version="1.0" encoding="UTF-8"?>
- <students>
- <student id = "1">
- <name>伍业雄</name>
- <age>22</age>
- </student>
- <student id = "2">
- <name>陈俊安</name>
- <age>21</age>
- </student>
- <student id = "3">
- <name>王世铭</name>
- <age>22</age>
- </student>
- </students>
复制代码
写个bean 嘿嘿.<我都没学java web 原来这东西叫Bean>
-
- package tree.love.bean;
- import java.io.Serializable;
- public class Person implements Serializable{
- private int id ;
- private String name ;
- private int age ;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public Person(){}
- public Person(String name ,int age )
- {
- this.name = name ;
- this.age = age ;
- }
- @Override
- public String toString() {
-
- return this.name +",,"+this.age;
- }
- }
复制代码
然后这就是解析xml的代码了.返回一个List<T>
-
- package tree.love.xmlUitl;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.List;
- import org.xmlpull.v1.XmlPullParser;
- import org.xmlpull.v1.XmlPullParserException;
- import tree.love.bean.Person;
- import android.util.Log;
- import android.util.Xml;
- public class MyPullxml {
- private static final String XMLPULL_INFO = "XmlPull_Info";
- public static List<Person> getDate(InputStream inStream)
- {
- List<Person> persons = null ;
- Person currentPerson = null ;
-
- /**
- * android给我们提供了一个工具类'Xml'
- * 通过这个工具类可以很方便地去new一个Pull的解析器,返回类型是XmlPullParser
- *
- **/
- XmlPullParser xmlPull = Xml.newPullParser();
-
- try {
- /**
- * 提供的xml内容方式都是以输入流的方式InputStream
- **/
- xmlPull.setInput(inStream,"UTF-8");
- /**
- * 触发事件getEventType() =>返回事件码
- * 当它遇到某个字符,如果符合xml的语法规范.
- * 它就会出发这个语法所代表的数字
- * Returns the type of the current event (START_TAG, END_TAG, TEXT, etc.)
- **/
- int eventCode = xmlPull.getEventType();
-
- /**
- * 解析事件:
- * StartDocument,文档开始
- * Enddocument,文档结束
- *
- * 每次读到一个字符,就产生一个事件
- * 只要解析xml文档事件不为空,就一直往下读
- **/
- while (eventCode != XmlPullParser.END_DOCUMENT)
- {
- switch (eventCode)
- {
-
- case XmlPullParser.START_DOCUMENT: //文档开始事件,可以做一些数据初始化处理
- persons = new ArrayList<Person>();
- break;
-
- case XmlPullParser.START_TAG://元素开始.
- String name = xmlPull.getName();
- if(name.equalsIgnoreCase("student"))
- {
- currentPerson = new Person();
- currentPerson.setId(new Integer(xmlPull.getAttributeValue(null, "id")));
- }
- else if(currentPerson != null)
- {
- if(name.equalsIgnoreCase("name"))
- {
- currentPerson.setName(xmlPull.nextText());
- }
- else if(name.equalsIgnoreCase("age"))
- {
- currentPerson.setAge(new Short(xmlPull.nextText()));
- }
- }
- break;
- case XmlPullParser.END_TAG: //元素结束,
- if(currentPerson != null && xmlPull.getName().equalsIgnoreCase("student"))
- {
- persons.add(currentPerson);
- currentPerson = null ;
- }
- break;
- }
- eventCode = xmlPull.next();//进入到一下一个元素.
- }
- } catch (XmlPullParserException e) {
-
- Log.i(XMLPULL_INFO, e.toString());
- } catch (IOException e) {
-
- Log.i(XMLPULL_INFO, e.toString());
- }
- return persons;
- }
- }
复制代码
最后xml的数据这东西 写好之后最好能用Android Junit 一下.再与之数据交互 ,放进listView 或者Gridview
- package tree.love.action;
- import java.io.InputStream;
- import java.util.List;
- import tree.love.bean.Person;
- import tree.love.xmlUitl.MyPullxml;
- import android.test.AndroidTestCase;
- import android.util.Log;
- public class xmlText extends AndroidTestCase {
- public void PullXmlText() throws Exception
- {
- InputStream instream = this.getClass().getClassLoader().getResourceAsStream("student.xml");
- List<Person> persons = MyPullxml.getDate(instream);
- for(Person person : persons)
- {
- Log.i("XML", person.toString());
- }
- }
- }
复制代码
分享到:
相关推荐
android xml pull解析示例,自己mark下,备忘
[Android实例] Android之解析XML文件
android XML本地解析实例 android XML本地解析实例
android解析xml实例
php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
java解析xml实例 java解析xml实例 java解析xml实例
android解析豆瓣电影API的一个实例,涉及解析xml和异步下载图片,希望对初学者有帮助
本代码实例采用SAX实现对XML文件的解析,包括这个数据和标签的提取
包括android代码实例以及个人对Dom解析xml文件的总结文档。
读取和解析xml文件
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
实例代码提供了三种xml解析方式
此实例实现了android的三种常见XMl解析方式
android java开发常用 xml数据格式解析 生成 jdom.jar 有各种实例代码,加压查找即可看到个版本jar 包
Android XML文件解析的三种方式实例,在MainActivity中可切换解析方式
MFC 解析XML类和Markup解析XML文件实例
WebView布局使用,okHTTP访问解析服务器返回的json/xml数据。
xml解析源代码,工作正常,有需要的同学请自由下载。欢迎下载
本程序提供了解析xml的四种方法,希望能帮助到需要的朋友。