ITPub博客

首页 > IT职业 > IT职场 > Java 解析xml 之 SAX解析

Java 解析xml 之 SAX解析

IT职场 作者:wyvernw 时间:2021-09-09 09:06:42 0 删除 编辑
SAX是什么
SAX是一种快速读写XML数据的方式。
局限

1.SAX分析器在解析xml文档时,触发了一系列事件,因为事件本身是有时序性的。因此SAX一旦经过了某个元素,没有办法返回再去访问。

2.SAX分析器只事检查xml文档中的字节流,语法,然后触发相应事件。而处理函数本身则要由程序实现,相比DOM,SAX缺乏灵活性。

优势

SAX分析器实现简单,对内存要求比较低,因此实现小路比较高;对于大型的xml文档来说,通常会用SAX而不用DOM;对于那些只需要访问xml文档中的数据而不对文档进行更改的应用程序来说,SAX分析器更为合适。

SAX实例解析
Juny Of City
Juny201115.99Harry Potter
J K. Rowling200529.99
解析过程
package sax;

import java.io.File;
import java.util.Stack;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SaxTest2 {
    public static void main(String[] args) throws Exception {
        // step 1: 获得SAX解析器工厂实例
        SAXParserFactory factory = SAXParserFactory.newInstance();

        // step 2: 获得SAX解析器的实例
        SAXParser parser = factory.newSAXParser();

        // step 3: 开始进行解析
        // 传入待解析的文档的处理器
        parser.parse(new File("books.xml"),new MySAXHandler());
    }
}

class MySAXHandler extends DefaultHandler {
    // 使用栈这个数据结构来保存
    private Stack stack = new Stack();

    // 数据
    private String title;
    private String author;
    private String year;
    private double price;

    @Override
    public void startDocument() throws SAXException {
        System.out.println("start document-> parse begin");
    }

    @Override
    public void endDocument() throws SAXException {
        System.out.println("end document-> parse finished");
    }

    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {

        // 将标签名压入栈
        stack.push(qName);

        // 处理属性
        for (int i = 0; i 
## 控制台输出 ##
start document-> parse begin
属性:category:man
属性:lang:en
Book info: -------
    title: Juny Of City
    author: Juny
    year: 2011
    price: 15.99

属性:category:children
属性:lang:en
Book info: -------
    title: Harry Potter
    author: J K. Rowling
    year: 2005
    price: 29.99

end document-> parse finished

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/835/viewspace-2799552/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: java课程练习
请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    128
  • 访问量
    1298