首页 android解析xml三种方式

android解析xml三种方式

举报
开通vip

android解析xml三种方式解析Xml有三种方式可选,sax ,dom ,pull  ,,各有各的优点,但在android上是不推荐使用DOM来解析的 一般都用SAX和PULL 这两个性能相近, SAX的解析方式大家可以去看MARS的教程 讲的也比较好喔 PULL的话我个人觉得处理事件比较简单,所以就给不懂的同学详细讲讲,嘿嘿....希望大家都能明白 感谢 传智的张老师,黎老师, 感谢勇军哥 首先给大家看看我的笔记 那么我们就开始吧 很简单,这是我们要解析的xml文件,直接放在src之下 1.​  2.​  3.​  4.​ 伍业雄 5.​ ...

android解析xml三种方式
解析Xml有三种方式可选,sax ,dom ,pull  ,,各有各的优点,但在android上是不推荐使用DOM来解析的 一般都用SAX和PULL 这两个性能相近, SAX的解析方式大家可以去看MARS的教程 讲的也比较好喔 PULL的话我个人觉得处理事件比较简单,所以就给不懂的同学详细讲讲,嘿嘿....希望大家都能明白 感谢 传智的张老师,黎老师, 感谢勇军哥 首先给大家看看我的笔记 那么我们就开始吧 很简单,这是我们要解析的xml文件,直接放在src之下 1.​  2.​  3.​  4.​ 伍业雄 5.​ 22 6.​  7.​  8.​ 陈俊安 9.​ 21 10.​  11.​  12.​ 王世铭 13.​ 22 14.​  15.​  16.​  复制代码 写个bean  嘿嘿.<我都没学java web  原来这东西叫Bean> 1.​  2.​ package tree.love.bean; 3.​ import java.io.Serializable; 4.​ public class Person implements Serializable{ 5.​ private int id ; 6.​ private String name ; 7.​ private int age ; 8.​ public int getId() { 9.​   return id; 10.​ } 11.​ public void setId(int id) { 12.​   this.id = id; 13.​ } 14.​ public String getName() { 15.​   return name; 16.​ } 17.​ public void setName(String name) { 18.​   this.name = name; 19.​ } 20.​ public int getAge() { 21.​   return age; 22.​ } 23.​ public void setAge(int age) { 24.​   this.age = age; 25.​ } 26.​ public Person(){} 27.​ public Person(String name ,int age ) 28.​ { 29.​   this.name = name ; 30.​   this.age = age ; 31.​ } 32.​ @Override 33.​ public String toString() { 34.​    35.​   return this.name +",,"+this.age; 36.​ } 37.​  38.​ } 复制代码 然后这就是解析xml的代码了.返回一个List 1.​  2.​ package tree.love.xmlUitl; 3.​ import java.io.IOException; 4.​ import java.io.InputStream; 5.​ import java.util.ArrayList; 6.​ import java.util.List; 7.​ import org.xmlpull.v1.XmlPullParser; 8.​ import org.xmlpull.v1.XmlPullParserException; 9.​ import tree.love.bean.Person; 10.​ import android.util.Log; 11.​ import android.util.Xml; 12.​ public class MyPullxml { 13.​  14.​ private static final String XMLPULL_INFO = "XmlPull_Info"; 15.​ public static List getDate(InputStream inStream) 16.​ { 17.​   List persons = null ; 18.​   Person currentPerson = null ; 19.​    20.​   /** 21.​    * android给我们提供了一个工具类'Xml' 22.​    * 通过这个工具类可以很方便地去new一个Pull的解析器,返回类型是XmlPullParser 23.​    * 24.​    **/ 25.​   XmlPullParser xmlPull = Xml.newPullParser(); 26.​    27.​   try { 28.​    /** 29.​     * 提供的xml内容方式都是以输入流的方式InputStream 30.​     **/ 31.​    xmlPull.setInput(inStream,"UTF-8"); 32.​    /** 33.​     * 触发事件getEventType() =>返回事件码 34.​     * 当它遇到某个字符,如果符合xml的语法 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 . 35.​     * 它就会出发这个语法所代表的数字 36.​     * Returns the type of the current event (START_TAG, END_TAG, TEXT, etc.) 37.​     **/ 38.​    int eventCode = xmlPull.getEventType(); 39.​     40.​    /** 41.​     * 解析事件: 42.​     * StartDocument,文档开始 43.​     * Enddocument,文档结束 44.​     * 45.​     *  每次读到一个字符,就产生一个事件 46.​     *  只要解析xml文档事件不为空,就一直往下读 47.​     **/ 48.​    while (eventCode != XmlPullParser.END_DOCUMENT) 49.​    { 50.​     switch (eventCode) 51.​     { 52.​     53.​     case XmlPullParser.START_DOCUMENT: //文档开始事件,可以做一些数据初始化处理 54.​      persons = new ArrayList(); 55.​      break; 56.​       57.​     case XmlPullParser.START_TAG://元素开始. 58.​      String name = xmlPull.getName(); 59.​      if(name.equalsIgnoreCase("student")) 60.​      { 61.​       currentPerson = new Person(); 62.​       currentPerson.setId(new Integer(xmlPull.getAttributeValue(null, "id"))); 63.​      } 64.​      else if(currentPerson != null) 65.​      { 66.​       if(name.equalsIgnoreCase("name")) 67.​       { 68.​        currentPerson.setName(xmlPull.nextText()); 69.​       } 70.​       else if(name.equalsIgnoreCase("age")) 71.​       { 72.​        currentPerson.setAge(new Short(xmlPull.nextText())); 73.​       } 74.​      } 75.​      break; 76.​     case XmlPullParser.END_TAG: //元素结束, 77.​  78.​      if(currentPerson != null && xmlPull.getName().equalsIgnoreCase("student")) 79.​      { 80.​       persons.add(currentPerson); 81.​       currentPerson = null ; 82.​      } 83.​      break; 84.​     } 85.​     eventCode = xmlPull.next();//进入到一下一个元素. 86.​    } 87.​   } catch (XmlPullParserException e) { 88.​     89.​    Log.i(XMLPULL_INFO, e.toString()); 90.​   } catch (IOException e) { 91.​     92.​    Log.i(XMLPULL_INFO, e.toString()); 93.​   } 94.​   return persons; 95.​ } 96.​ } 复制代码 最后xml的数据这东西 写好之后最好能用Android Junit 一下.再与之数据交互 ,放进listView 或者Gridview 1.​ package tree.love.action; 2.​  3.​ import java.io.InputStream; 4.​ import java.util.List; 5.​  6.​ import tree.love.bean.Person; 7.​ import tree.love.xmlUitl.MyPullxml; 8.​ import android.test.AndroidTestCase; 9.​ import android.util.Log; 10.​  11.​ public class xmlText extends AndroidTestCase { 12.​ public void PullXmlText() throws Exception 13.​ { 14.​ InputStream instream = this.getClass().getClassLoader().getResourceAsStream("student.xml"); 15.​  16.​ List persons = MyPullxml.getDate(instream); 17.​  18.​ for(Person person : persons) 19.​ { 20.​ Log.i("XML", person.toString()); 21.​ } 22.​ } 23.​ }
本文档为【android解析xml三种方式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_333547
暂无简介~
格式:doc
大小:43KB
软件:Word
页数:5
分类:互联网
上传时间:2011-10-30
浏览量:23