基于事件驱动的解析接口 SAX (实例二)

本文介绍了一个使用SAX解析XML文件的Java示例,旨在从一个包含书籍信息的XML文件中统计小说的数量。示例代码展示了如何设置SAX解析器、定义事件处理方法以及如何读取XML元素的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 基于事件驱动的解析接口 SAX (实例二) 实例二、查查看我的 书架 中有多少本 小说 书(获取元素的属性值) 题目是要查出来下面的 XML 文件 books.xml 里有多少本 小说。 <书架> <书 类别="参考书"> <著者>谭浩强 <书名>学习C <价格>20.00 <书 类别="小说"> <著者>吴承恩 <书名>西游记 <价格>120.56 <书 类别="小说"> <著者>曹雪芹 <书名>红楼梦 <价格>208.99 <书 类别="小说"> <著者>睡虫 <书名>下月出版 <价格>0.00 下面的代码使用了 SUN 的 JAXP 包,请在 http://java.sun.com/xml/download.html 下载。 在 Jbuilder4 中运行正确。请注意将要分析的 xml 文件放在 http://localhost/books.xml 或者更改此 URI import org.xml.sax.*; import javax.xml.parsers.*; /** * Title: XML Study, Sample 2 * Description: Count fictions in my shelf. * Copyright: Copyright (c) 2001 * Company: Isolation Land. * @author Slepworm * @version 1.0 */ public class GetAtts extends org.xml.sax.helpers.DefaultHandler{ private int count = 0; // 定义一个计数器 private boolean isFiction; public GetAtts() { } // 创建一个新的 JAXP 的 SAXParserFactory 实例,并且配置它。 public void createParser() throws Exception { SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setValidating(false); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); xr.setContentHandler(this); xr.parse("http://localhost/books.xml"); } // 当每次碰到一个 book 元素的时候,将 计数器 加一。此方法在遇到第一个元素的时候开始执行 public void startElement(String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException { if (rawName.equals("书")) { String category = atts.getValue("类别"); ///**** 获取 类别 的值 System.out.println(category); //打印 类别 的值 isFiction = (category != null && category.equals("小说")); //如果 类别 的值为 小说 则将计数器加一。 if (isFiction) count ; } } // 输出 计数器。此方法在分析文档完成的时候执行 public void endDocument() throws SAXException { System.out.print(count); } public static void main(String[] args) throws Exception { BookCounter ga = new GetAtts(); ga.createParser(); } } 输出结果 为 参考书 小说 小说 小说 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值