当前位置:文档之家› JAVAWEB开发实战经典

JAVAWEB开发实战经典

public static void main(String[] args) throws Exception { // 1、建立SAX解析工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); // 2、构造解析器 SAXParser parser = factory.newSAXParser(); // 3、解析XML使用HANDLER parser.parse("d:" + File.separator + "sax_demo.xml", new
}
public void endDocument() throws SAXException { System.out.println("\n文档读取结束。。。");
// 文档结束
}
public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { // 元素开始
MySAX()); } }
DOM解析和SAX解析的区别
No. 区别
DOM解析
SAX解析
将所有的文件读取到内存之中形成 顺序读入所需要的文件内容,不会一
1
操作
DOM树,如果文件量过大,则无
次性全部读取,不受文件大小的
法使用
限制
DOM树在内存中形成,可以随意存放 由于采用部分读取,只能对文件按顺
2 访问限制
System.out.print("<"); System.out.print(name); if (attributes != null) {
// 输出元素名称 // 取得全部的属性
for (int i = 0; i < attributes.getLength(); i++) {
for (int j = 0; j < attributes.getLength(); j++) {
扫描过程
编写SAX解析器 ——
MySAX.java public class MySAX extends DefaultHandler { public void startDocument() throws SAXException {
// 定义SAX解析器 // 文档开始
System.out.println("<?xml version=\"1.0\" encoding=\"GBK\" ?>");
// 元素结束
System.out.print("</"); System.out.print(name);
// 输出元素名称
System.out.print(">");
}}
建立要读取的文件 ——
sax_demo.xml
<?xml version="1.0" encoding="GBK"?>
<addresslist> <linkman id="lxh"> <name>李兴华</name> <email>mldnqa@</email> </linkman> <linkman id="mldn"> <name>MLDN</name> <email>mldnkf@</email> </linkman>
或读取文件树的任何部分,没有
序从头到尾解析一遍,不支持对
次数限制
文件的随意存取
3
修改 可以任意修改文件树
只能读取XML文件内容,但不能修改
4 复杂度 易于理解,易于开发
开发上比较复杂,需要用户自定义事 件处理器
5
对象模型
系统为使用者自动建立DOM树, XML对象模型由系统提供
对开发人员更加灵活,可以用SAX建 立自己的XML对象模型
小结
❖ SAX解析适合于文件的读取,但是本身不能 修改;
❖ DOM与SAX各有优点,使用时要划分出场合。
下一章内容
XML解析 —— JDOM
本章目标
❖ 掌握SAX的主要操作原理 ❖ 理解DOM与SAX操作的区别
SAX解析操作
❖ SAX(Simple APIs for XML,操作XML的简 单接口),与DOM操作不同的是,SAX采用 的是一种顺序的模式进行访问,是一种快速 读取XML数据的方式。当使用SAX解析器进 行操作的时候会触发一系列的事件,如表3-7 所示,当扫描到文档(document)开始与结 束、元素(element)开始与结束时都会调用 相关的处理方法,并由这些操作方法作出相 应的操作,直至整个文档扫描结束。
System.out.print(" " + attributes.getQName(j) + "=\""
+ attributes.getValue(j) + "\" ");
}
}
}
System.out.print(">");
}
public void characters(char[] ch, int start, int length) throws SAXException {
System.out.print(new String(ch, start, length));
// 取得元素内容 // 输出内容
}
public void endElement(String uri, String localName, String name)
throws SAXExcAX解析器
package org.lxh.xml.sax;
import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; public class TestSAX {
相关主题