SAX解析XML

SAX在概念上与DOM完全不同。它不同于DOM的文档驱动,它是事件驱动的,它并不需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。
输入XML文件到XMLReader-->XMLReader(parse())解析-->ContentHandler(相当事件监听器,定义了好多方法,常用的startDocument(),endDocument(),startElement(),endElement(),characters())。这些方法被覆盖,方法体自定义。
在XMLReader parse()过程中生成相应事件,以触发ContentHandler中相应的方法。本代码只是最简单的例子,自己想得到什么结果可以在事件中编不同的代码控制。

SAX可以继承的类有四个,但实际上只要继承一个DefaultHandler可以了
想写一个类Update继承DefaultHandler
//创建SAXParser的实例
SAXParser parser = (SAXParser) Class.forName("org.apache.xerces.parsers.SAXParser").newInstance();
//允许应用程序注册内容事件处理程序。
parser.setContentHandler(Update);
//解析 XML。
parser.parse(文件名);
当SAX读到文件开始时,触发事件,执行startDocument()方法,读到标签触发startElement()方法,下面执行characters()或endElement()方法视情况而定,最后读完执行endDocument()方法
方法定义如下:

public void startDocument() throws SAXException {
System.out.println("文件开始");
}

public void startElement(String uri, String name, String qName,
Attributes atts) throws SAXException {
System.out.println("标签开始");
}

public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.println("处理字符");
}

public void endDocument() throws SAXException {
System.out.println("文档结束");
}

public void endElement(String uri, String name, String qName)
throws SAXException {
System.out.println("标签结束");
}

参数:qName:标签的标签名
Attribute接口中的getLocalName()和getValue()方法可以得到标签和值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值