Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1502575
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 19:59:07

一起学习
基于事件驱动的解析接口 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 包,请在 下载。 在 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(""); //进行语法分析 } 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 文件改成错误的结构,看看 会有什么例外抛出 下载本文示例代码


基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)基于事件驱动的解析接口 SAX (实例一)
阅读(93) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~