JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JSP技术--JSP实例  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
基于事件驱动的解析接口 SAX (实例一)
作者:     文章来源:
访问次数:329次     加入时间:2007年02月11日
基于事件驱动的解析接口 SAX (实例一)

SAX vs. DOM
DOM是基于树结构的一种接口;SAX是基于事件驱动的解析接口。
有什么区别呢?
1、SAX 可以解析任意大小的文件,而 DOM 解析的文件大小则和硬件有关。DOM 需要将整个文件加载到内存,而 SAX 不需要。
2、因为 SAX 是不把文件加载到内存,所以不能对文档进行随机存取;而 DOM 可以做到。
3、SAX 相对 DOM 来说是简单易用。
4、如果要从文档的简单系列中获取信息,SAX 是最快的方法。



实例一、查查有多少本书?
题目是要查出来下面的 XML 文件 books.xml 里有多少本书。




XXX1
Thinking in Java
60.00


XXX2
Thinking in C++
56.00


Slepwormzz
My Dirty Mind
8.99



下面的代码使用了 SUN 的 JAXP 包,请在 http://java.sun.com/xml/download.html 下载。
在 Jbuilder4 中运行正确。

import org.xml.sax.*;
import javax.xml.parsers.*;
import java.io.IOException;

/**
* Title: XML Study, Sample 1
* Description: Count My books.
* Copyright: Copyright (c) 2001
* Company: Isolation Land.
* @author Slepworm
* @version 1.0
*/

public class BookCounter extends org.xml.sax.helpers.DefaultHandler{
private int count = 0; // 定义一个计数器
public BookCounter() {
}
// 主程序
public void countBooks() throws Exception {

// 创建一个新的 JAXP 的 SAXParserFactory 实例,并且配置它。在 JAXP 包的例子中可以看到此种方法
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setValidating(false); // 试一下改为 true
XMLReader xr = null;
try {
SAXParser sp = spf.newSAXParser();
xr = sp.getXMLReader();
} catch (Exception e) {
System.err.print(e);
System.exit(1);
}
xr.setContentHandler(this);

try {
xr.parse("http://localhost/books.xml"); //进行语法分析
} catch (SAXException se) {
System.err.println(se.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
}

// 当每次碰到一个 book 元素的时候,将 计数器 加一。此方法在遇到第一个元素的时候开始执行
public void startElement(String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException {
if (rawName.equals("book"))
count++;
}

// 输出 计数器。此方法在分析文档完成的时候执行
public void endDocument() throws SAXException {
System.out.print(count);
}

public static void main(String[] args) throws Exception {
BookCounter bc = new BookCounter();
bc.countBooks();
}
}


我们可以看到输出了结果 为 3
试着把 books.xml 文件改成错误的结构,看看 会有什么例外抛出



JSP虚拟主机 | JSP空间 | JSP主机 | JSP双线虚拟主机 | JAVA空间 | JAVA虚拟主机 | 虚拟服务器 | JSP 虚拟服务器 | VPS
Virtual Private Server | JAVA虚拟服务器 | VM服务器 | VHOST | 虚拟操作系统 | JSP论坛 | JAVA论坛 | JSP站点论坛
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号