SAX解析XML文件的简单应用
2016-08-12 14:11
537 查看
SAX顺序读取XMl文件时,并非一次性将XML文件读到内存中去,而是一段一段的读到内存中。SAX的解析器是基于事件的模型,解析XML文件时会触发一系列事件。SAX占用内存小、处理灵活,对于手机端的开发比较适合。
如果需要对XMl文件反复操作,并且做修改等动作,SAX就不适合了。
案例:简单读取XMl文件中的内容
1、 通过继承DefaultHandler,并重写四个函数即可完成解析操作
2、 调用方法
3、 XML文件
4、 执行结果
如果需要对XMl文件反复操作,并且做修改等动作,SAX就不适合了。
案例:简单读取XMl文件中的内容
1、 通过继承DefaultHandler,并重写四个函数即可完成解析操作
public class MyXmlReadHandler extends DefaultHandler{ private String tagName; private Student student = null; private List<Student> lists = null; public List<Student> getLists() { return lists; } /** * 读取XML文件开始(初始化集合对象) */ @Override public void startDocument() throws SAXException { lists = new ArrayList<Student>(); } /** * 读取标签开始(初始化student对象) */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { tagName = qName; if(tagName.equals("student")){ student = new Student(); } } /** * 读取标签内容(给对象student属性赋值) * 通过简单的if-else判断方式 */ @Override public void characters(char[] ch, int start, int length) throws SAXException { if (tagName != null) { String data = new String(ch, start, length); if (tagName.equals("name")) { student.setName(data); }else if (tagName.equals("age")) { student.setAge(data); }else if (tagName.equals("sex")) { student.setSex(data); } } } /** * 读取标签内容结束(给集合对象赋值) * 并注意:tagName = null */ @Override public void endElement(String uri, String localName, String qName) throws SAXException { if(qName.equals("student")){ lists.add(student); } tagName = null; } }
2、 调用方法
public class XmlSax { public static void main(String[] args) throws Exception { InputStream ins = Thread.currentThread().getContextClassLoader().getResourceAsStream("students.xml"); MyXmlReadHandler readHandler = new MyXmlReadHandler(); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser sp = factory.newSAXParser(); sp.parse(ins, readHandler); ins.close(); List<Student> lists = readHandler.getLists(); for (Student person : lists) { System.out.println("--------------"); System.out.println("name:"+person.getName()); System.out.println("age:"+person.getAge()); System.out.println("sex:"+person.getSex()); } } }
3、 XML文件
<?xml version="1.0" encoding="UTF-8"?> <students> <student id='0001'> <name>stu01</name> <age>20</age> <sex>男</sex> </student> <student id='0002'> <name>stu02</name> <age>22</age> <sex>女</sex> </student> </students>
4、 执行结果
相关文章推荐
- SAX 解析XML文件(相对解析的所有方法来说,这种最简单)
- android解析json和xml文件的简单应用(二)
- android应用开发之利用SAX、DOM和Pull实现对XML文件的解析并进行单元测试
- java--通过sax方式解析xml文件的简单实例
- 【慕课笔记】3-2 应用SAX方式解析XML—使用SAX解析XML文件的节点属性
- 【慕课笔记】3-1 应用SAX方式解析XML—使用SAX解析XML文件的开始和结束
- 【慕课笔记】3-3 应用SAX方式解析XML—使用SAX解析XML文件的节点名和节点间文本
- android解析xml文件的SAX方式:Simple API for XML
- 用python来解析xml文件(简单情况)
- sax解析xml文件(一)
- SAX方式解析XML的简单方法
- 解析XML文件(字符串)的两种方法-----SAXReader 与 DocumentHelper
- XMLParser解析创建简单的XML文件
- 使用Digester解析XML文件简单范例
- 原创:Js解析xml文件并简单实现省市区级联菜单(并解决各浏览器兼容性问题).
- android 用 SAX 解析xml文件!
- 简单XML文件解析
- 用python来解析xml文件(简单情况)
- Java 使用SAX解析xml文件
- sax解析xml文件