xml解析-jaxp-sax方式

总结一下xml文件解析的另一种方式-sax方式,先看一下解析的步骤:
1、创建解析器工厂
2、创建解析器
3、执行parse方法
4、创建一个类,继承DefaultHandler
5、重写三个方法

一、新建一个待解析的xml文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<person>
    <per>
        <age>22</age>
        <sex>man</sex>
    </per>
    <per>
        <age>22</age>
        <sex>nv</sex>
    </per>
    <per>
        <age>22</age>
        <sex>man</sex>
    </per>
</person>

二、新建java文件

public class SaxXml {
    public static void main(String[] args) throws Exception {
        /*
         * 1、创建解析器工厂
         * 2、创建解析器
         * 3、执行parse方法
         * 4、创建一个类,继承DefaultHandler
         * 5、重写三个方法
         */
        long time = System.currentTimeMillis();
        //创建解析器工厂
        SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
        //创建解析器
        SAXParser saxParser = saxParserFactory.newSAXParser();
    }
}

三、新建一个类继承DefaultHandler类,并重写它的三个方法

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/*
 * 读取整个文件
 */
public class MyDefaultHandler extends DefaultHandler{

    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        System.out.print("<"+qName+">");
    }

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        System.out.print(new String(ch,start,length));
    }

    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        System.out.print("</"+qName+">");
    }
}

这个类里面的三个方法的作用很好理解,就是一个标签一个标签的读取xml文件,有一个判断开始标签和结束标签的方法,另一个方法是执行操作的。

四、执行parse方法

saxParser.parse("src/sax/person.xml", new MyDefaultHandler());

这种解析xml文件的方法虽然在大文件下能节省内存,但是操作起来相当麻烦,每一个功能都需要写一个类并且重写其中的三个方法,所这中解析方式不常用,常用的有dom4j和jdom,我会在其它博文里介绍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值