关于使用SAX解析XML文件也没什么要说明的,直接上代码吧。

关键如下:

public class PersonHandler extends DefaultHandler {private String preTAG;private List<PersonInfo> personList;private PersonInfo per;public PersonHandler() {super();}public PersonHandler(List<PersonInfo> personList) {super();this.personList = personList;}public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {preTAG = localName;if ("person".equals(localName)) {per = new PersonInfo();per.setId(new Integer(attributes.getValue(0)));}super.startElement(uri, localName, qName, attributes);}public void endElement(String uri, String localName, String qName)throws SAXException {preTAG = "";if ("person".equals(localName)) {personList.add(per);}super.endElement(uri, localName, qName);}public void characters(char[] ch, int start, int length)throws SAXException {if ("name".equals(preTAG)) {per.setName(new String(ch, start, length));} else if ("age".equals(preTAG)) {per.setAge("" + Integer.parseInt(new String(ch, start, length)));}super.characters(ch, start, length);}public List<PersonInfo> getPersonList() {return personList;}public void setPersonList(List<PersonInfo> personList) {this.personList = personList;}
}

这里需要一个辅助类:

public class PersonInfo {private Integer id;private String name;private String age;public PersonInfo() {}public PersonInfo(Integer id, String name, String age) {this.id = id;this.name = name;this.age = age;}public Integer getId() {return id;}public void setId(Integer 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;}}

主界面Activity入口如下:

public class SAXActivity extends Activity {Button btn;ListView listView;List<String> list = new ArrayList<String>();public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btn = (Button) findViewById(R.id.sax_button);listView = (ListView) findViewById(R.id.lv);btn.setOnClickListener(new OnClickListener() {public void onClick(View arg0) {List<PersonInfo> persons = parserXMl();for (Iterator iterator = persons.iterator(); iterator.hasNext();) {PersonInfo person = (PersonInfo) iterator.next();list.add(String.valueOf("ID:" + person.getId()) + " 姓名: "+ person.getName() + " 年龄: " + person.getAge());}ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1, list);listView.setAdapter(adapter);}});}private List<PersonInfo> parserXMl() {List<PersonInfo> persons = new ArrayList<PersonInfo>();PersonInfo person = null;try {// 创建解析器SAXParserFactory sax = SAXParserFactory.newInstance();XMLReader reader = sax.newSAXParser().getXMLReader();// 为reader设置内容处理器reader.setContentHandler(new PersonHandler(persons));// 开始解析文件reader.parse(new InputSource(getResources().openRawResource(R.raw.person)));// 循环保存解析内容到personsfor (Iterator iterator = persons.iterator(); iterator.hasNext();) {person = (PersonInfo) persons.iterator();}persons.add(person);} catch (Exception e) {}return persons;}
}

解析结果如下:

使用SAX解析XML文件相关推荐

  1. android xml defaulthandler解析,sax解析xml文件的DefaultHandler处理类

    一千年的时光,我无数次掀起岁月的帷幔,只为和你,在某一个平静如水的日子相遇,然后相识,倾情一生,缱绻一世,好美的散文,好吧,我情愿把这个"你"当作android:),使用sax解析 ...

  2. SAX 解析XML文件:将XML转换成Java对象

    本博客介绍的是解析本地XML文件,解析网络上的XML 本文写得比较简略,实际上项目应用更多的是解析网上的xml资源 使用SAX 处理XML需要一个Handler 对象,一般继承org.xml.sax, ...

  3. python 使用sax 解析xml 文件

    这里不是说xml 的所以如果xml 不了解,可以百度大致看下即可, SAX知识了解 SAX (simple API for XML )  有解析器和事件处理器 解析器负责读取XML文档,并向事件处理器 ...

  4. SAX解析XML文件

    就目前来说,有三种方式可以解析XML文件:DOM.SAX.StAX.DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息:这种方 ...

  5. android xml解析demo,Android解析自定义xml文件--Sax解析xml文件,测试demo(方案二)...

    转载请注明出处:http://blog.csdn.net/droyon/article/details/9346657 Sax解析xml 以下是测试Demo 运行程序类 public class Te ...

  6. android用sax解析xml,详解android使用SAX解析XML文件

    解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析. DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了. 优点:整个 ...

  7. Android开发--详解SAX解析XML文件

    SAX技术字处理XML文件时并不是一次性把XML文件装入内存,而是一边读一边解析,因此,在解析的过程中会有几个步骤需要注意,在这里用一张图来表示解析的步骤: 在本实例中,定义了一个xml文件,其中有若 ...

  8. java sax解析xml_【转】java使用sax解析xml文件

    从下面这个url搬运.http://hck.iteye.com/blog/1175762 不过程序略有改动. 关于sax(搬自百科) SAX,全称Simple API for XML,既是指一种接口, ...

  9. 使用SAX解析XML文件出现中文乱码问题(dom4j)

    乱码问题很多都是跟编码有关,结合我的系统的功能,先将数据从内存存入xml文件中,再从xml中解析出来,这一个过程中,会遇到3次编码的过程. 第一,数据从在myeclipse写着的时候的编码. 第二,数 ...

最新文章

  1. 上传文件大小的配置Webcong
  2. 知道邻边和斜边求角度_从数学史角度看数系发展
  3. android udp定时发送,Android Socket基于UDP协议通信
  4. Log4j2完整XML参考(详细注释说明)
  5. 谷歌死磕亚马逊,CES 舞台上的语音入口争夺战
  6. python argparse 入门
  7. swing怎么监听其他类的按钮_Swing舞出我人生 Vol.05 / 我想通过跳舞去寻找自己
  8. HTTPS and the TLS handshake protocol阅读笔记
  9. MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
  10. VS2013 Qt Unable to find a Qt Build 及 LINK1112错误
  11. 使用C语言--判断素数的两种方法
  12. 大数据Hadoop原理介绍+安装+实战操作(HDFS+YARN+MapReduce)
  13. 顺序表和链表 相关知识点总结
  14. 详细图解,一眼就能看懂!卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别
  15. 大学英语六级考试分数分布
  16. 网店三大要素:产品、运营与品牌
  17. C++11版本后的一写新语法及使用方法for、vector、map
  18. Excel中的LEN和LENB,VBA中的Len和LenB
  19. JS实现倒计时精确到天数,时,分,秒或者精确到时、分、秒(小时数累加)
  20. 笔记本麦克风声音小解决办法

热门文章

  1. java结丹期(11)----javaweb(jstljsp)
  2. 【Flask】Flask-RESTful 风格编程
  3. 草稿--深度学习cache系列
  4. [register]-TCR(Translation Control Register)寄存器详解
  5. Celery组件架构介绍
  6. SSL/TSL双向认证过程与Wireshark抓包分析
  7. 【安全漏洞】简要分析复现了最近的ProxyShell利用链
  8. 6、处理大数据对象(CLOB 数据小说+BLOG 数据图片,电影,音乐)
  9. Python操纵Mysql数据库的三种方法,实现增删改查
  10. Floyd-傻子也能看懂的弗洛伊德算法