SAX解析XML文件的简单应用
来源:互联网 发布:淘宝助理快递模板 编辑:程序博客网 时间:2024/05/01 22:05
SAX顺序读取XMl文件时,并非一次性将XML文件读到内存中去,而是一段一段的读到内存中。SAX的解析器是基于事件的模型,解析XML文件时会触发一系列事件。SAX占用内存小、处理灵活,对于手机端的开发比较适合。
如果需要对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、 执行结果
0 0
- SAX解析XML文件的简单应用
- xml的sax简单解析
- xml文件的sax解析
- xml文件的sax解析
- 关于sax解析XML文件的简单流程+工具类
- java--通过sax方式解析xml文件的简单实例
- iOS:XML文件的解析(SAX解析)
- SAX简单解析XML
- 简单SAX解析XML
- 【慕课笔记】3-1 应用SAX方式解析XML—使用SAX解析XML文件的开始和结束
- 【慕课笔记】3-2 应用SAX方式解析XML—使用SAX解析XML文件的节点属性
- xml文件解析-SAX
- sax解析xml文件
- SAX解析xml文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- Anaconda中spyder打不开,闪一下结束
- 程序员编程的 7 + 1 条小贴士
- Oracle round函数是什么意思?怎么运用?
- Python练习100例-34
- html5中新增的一些语义化标签
- SAX解析XML文件的简单应用
- BigDecimal处理钱
- |Tyvj|图论最短路|P1031 热浪
- JavaScript强化教程——jQuery 动画2
- CSS3初体验之奇技淫巧
- 第一章自己动手写服务器浏览器
- 微信私钥泄露的危害:一个微信公众号漏洞案例分析 201608152
- Android:五大布局控件使用
- 从play角度来分析netty -- 初始化ServerBootstrap