使用SAX解析XML文件
关于使用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文件相关推荐
- android xml defaulthandler解析,sax解析xml文件的DefaultHandler处理类
一千年的时光,我无数次掀起岁月的帷幔,只为和你,在某一个平静如水的日子相遇,然后相识,倾情一生,缱绻一世,好美的散文,好吧,我情愿把这个"你"当作android:),使用sax解析 ...
- SAX 解析XML文件:将XML转换成Java对象
本博客介绍的是解析本地XML文件,解析网络上的XML 本文写得比较简略,实际上项目应用更多的是解析网上的xml资源 使用SAX 处理XML需要一个Handler 对象,一般继承org.xml.sax, ...
- python 使用sax 解析xml 文件
这里不是说xml 的所以如果xml 不了解,可以百度大致看下即可, SAX知识了解 SAX (simple API for XML ) 有解析器和事件处理器 解析器负责读取XML文档,并向事件处理器 ...
- SAX解析XML文件
就目前来说,有三种方式可以解析XML文件:DOM.SAX.StAX.DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息:这种方 ...
- android xml解析demo,Android解析自定义xml文件--Sax解析xml文件,测试demo(方案二)...
转载请注明出处:http://blog.csdn.net/droyon/article/details/9346657 Sax解析xml 以下是测试Demo 运行程序类 public class Te ...
- android用sax解析xml,详解android使用SAX解析XML文件
解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析. DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了. 优点:整个 ...
- Android开发--详解SAX解析XML文件
SAX技术字处理XML文件时并不是一次性把XML文件装入内存,而是一边读一边解析,因此,在解析的过程中会有几个步骤需要注意,在这里用一张图来表示解析的步骤: 在本实例中,定义了一个xml文件,其中有若 ...
- java sax解析xml_【转】java使用sax解析xml文件
从下面这个url搬运.http://hck.iteye.com/blog/1175762 不过程序略有改动. 关于sax(搬自百科) SAX,全称Simple API for XML,既是指一种接口, ...
- 使用SAX解析XML文件出现中文乱码问题(dom4j)
乱码问题很多都是跟编码有关,结合我的系统的功能,先将数据从内存存入xml文件中,再从xml中解析出来,这一个过程中,会遇到3次编码的过程. 第一,数据从在myeclipse写着的时候的编码. 第二,数 ...
最新文章
- 上传文件大小的配置Webcong
- 知道邻边和斜边求角度_从数学史角度看数系发展
- android udp定时发送,Android Socket基于UDP协议通信
- Log4j2完整XML参考(详细注释说明)
- 谷歌死磕亚马逊,CES 舞台上的语音入口争夺战
- python argparse 入门
- swing怎么监听其他类的按钮_Swing舞出我人生 Vol.05 / 我想通过跳舞去寻找自己
- HTTPS and the TLS handshake protocol阅读笔记
- MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
- VS2013 Qt Unable to find a Qt Build 及 LINK1112错误
- 使用C语言--判断素数的两种方法
- 大数据Hadoop原理介绍+安装+实战操作(HDFS+YARN+MapReduce)
- 顺序表和链表 相关知识点总结
- 详细图解,一眼就能看懂!卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别
- 大学英语六级考试分数分布
- 网店三大要素:产品、运营与品牌
- C++11版本后的一写新语法及使用方法for、vector、map
- Excel中的LEN和LENB,VBA中的Len和LenB
- JS实现倒计时精确到天数,时,分,秒或者精确到时、分、秒(小时数累加)
- 笔记本麦克风声音小解决办法
热门文章
- java结丹期(11)----javaweb(jstljsp)
- 【Flask】Flask-RESTful 风格编程
- 草稿--深度学习cache系列
- [register]-TCR(Translation Control Register)寄存器详解
- Celery组件架构介绍
- SSL/TSL双向认证过程与Wireshark抓包分析
- 【安全漏洞】简要分析复现了最近的ProxyShell利用链
- 6、处理大数据对象(CLOB 数据小说+BLOG 数据图片,电影,音乐)
- Python操纵Mysql数据库的三种方法,实现增删改查
- Floyd-傻子也能看懂的弗洛伊德算法