Android 使用SAX解析XML文件
来源:互联网 发布:海康威视网络摄像机ip 编辑:程序博客网 时间:2024/05/21 04:00
Android 使用SAX解析XML文件
SAX, Simple API for XML,采用事件驱动。当读取到相应内容时便会调用相应的回调函数(方法),这些方法定义在ContentHandler接口中。
1. 以解析该xml文件为例:
<?xml version="1.0" encoding="UTF-8"?><persons> <person id="23"> <name>大明</name> <age>30</age> </person> <person id="20"> <name>小明</name> <age>25</age> </person></persons>
2.新建JavaBean,用于存放xml文件中的person数据:
public class Person { private int id; private String name; private short 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 short getAge() { return age; } public void setAge(short age) { this.age = age; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; }}
3.新建业务操作类:
public class SAXPersonService { public List<Person> getPersons(InputStream inputStream) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); PersonParserHandler handler = new PersonParserHandler(); parser.parse(inputStream, handler); inputStream.close(); return handler.getPersons(); } private final class PersonParserHandler extends DefaultHandler { private List<Person> persons = null; private Person person; private String tag = null; public List<Person> getPersons() { return persons; } @Override public void startDocument() throws SAXException { persons = new ArrayList<Person>(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if("person".equals(localName)) { person = new Person(); person.setId(new Integer(attributes.getValue(0))); } tag = localName; } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if("person".equals(localName)) { persons.add(person); person = null; } tag = null; } @Override public void characters(char[] ch, int start, int length) throws SAXException { if(tag != null) { if("name".equals(tag)) { person.setName(new String(ch, 0, length));//获取name中文本节点数据 }else if("age".equals(tag)) { person.setAge(new Short(new String(ch, 0, length)));//获取age中文本节点数据 } } } }}
4.新建单元测试类:
public class SAXPersonServiceTest extends AndroidTestCase { public void testGetPersons() throws Exception{ SAXPersonService service = new SAXPersonService(); InputStream inputStream = getClass().getClassLoader().getResourceAsStream("test.xml"); List<Person> persons = service.getPersons(inputStream); for(Person person : persons) { Log.i("TAG", person.toString()); } }}
0 0
- android中使用SAX解析xml文件
- android 使用SAX解析xml文件
- Android 使用SAX解析XML文件
- 使用SAX解析XML文件(SAX解析)
- Android--XML文件解析(SAX)
- Android SAX解析xml文件
- android SAX解析xml文件
- android sax 解析 xml文件
- Android SAX解析XML文件
- android SAX 解析Xml 文件
- 【android】SAX解析XML文件
- android SAX 解析XML文件
- Android SAX解析XML文件
- Android SAX解析xml文件
- Android SAX解析XML文件
- Android SAX解析xml文件
- Android SAX解析xml文件
- Android:SAX解析XML文件
- poj_2774_Long Long Message(后缀数组)
- Android VideoView实现视频播放
- 软件产品品质的探索与实践(一) —— 开发品质提升
- Java基础:集合框架
- (port forwarding )Windows 2008之端口代理转发
- Android 使用SAX解析XML文件
- 细节决定成败!交互设计上常见的界面切换动画!
- VS2010 项目引用了DLL文件,也写了Using,但是编译时提示:未能找到类型或命名空间名称
- 【单元测试】JUnit4 详解
- ip查询演示代码
- UML学习(一)类图和对象图
- 仿QQ和仿网易新闻侧滑功能代码初识
- 如何隐藏ActionBar的标题栏
- Pragma Exception_init 的用法