`
msn877763580
  • 浏览: 85031 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

SAX解析XML文档之二

阅读更多

 

<?xml version="1.0" encoding="UTF-8"?>
<books>
	<book id="12">
		<name>thinking in java</name>
		<price>85.5</price>
	</book>
	<book id="15">
		<name>Spring in Action</name>
		<price>39.0</price>
	</book>
</books>

 

 

package cn.sisy.xml;

public class Book {
	private int id;
	private String name;
	private float price;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
	@Override
	public String toString(){
		return this.id+":"+this.name+":"+this.price;
	}
}

 

 

 

package cn.sisy.xml;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import cn.sisy.xml.Book;

public class SaxParseService extends DefaultHandler{
	private List<Book> books = null;
	private Book book = null;
	private String preTag = null;//作用是记录解析时的上一个节点名称
	
	public List<Book> getBooks(InputStream xmlStream) throws Exception{
		SAXParserFactory factory = SAXParserFactory.newInstance();
		SAXParser parser = factory.newSAXParser();
		SaxParseService handler = new SaxParseService();
		parser.parse(xmlStream, handler);
		return handler.getBooks();
	}
	
	public List<Book> getBooks(){
		return books;
	}
	
	@Override
	public void startDocument() throws SAXException {
		books = new ArrayList<Book>();
	}

	@Override
	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
		if("book".equals(qName)){
			book = new Book();
			book.setId(Integer.parseInt(attributes.getValue(0)));
		}
		preTag = qName;//将正在解析的节点名称赋给preTag
	}

	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		if("book".equals(qName)){
			books.add(book);
			book = null;
		}
		preTag = null;/**当解析结束时置为空。这里很重要,例如,当图中画3的位置结束后,会调用这个方法
		,如果这里不把preTag置为null,根据startElement(....)方法,preTag的值还是book,当文档顺序读到图
		中标记4的位置时,会执行characters(char[] ch, int start, int length)这个方法,而characters(....)方
		法判断preTag!=null,会执行if判断的代码,这样就会把空值赋值给book,这不是我们想要的。*/
	}
	
	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {
		if(preTag!=null){
			String content = new String(ch,start,length);
			if("name".equals(preTag)){
				book.setName(content);
			}else if("price".equals(preTag)){
				book.setPrice(Float.parseFloat(content));
			}
		}
	}
	
}

 

 

package cn.sisy.xml;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;

import junit.framework.TestCase;

import cn.sisy.xml.SaxParseService;
import cn.sisy.xml.Book;

public class ParseTest extends TestCase{

	public void testSAX() throws Throwable{
		SaxParseService sax = new SaxParseService();
		//InputStream input = this.getClass().getClassLoader().getResourceAsStream("book.xml");
		InputStream input = new FileInputStream(new File("book.xml"));
		List<Book> books = sax.getBooks(input);
		for(Book book : books){
			System.out.println(book.toString());
		}
	}
}

 

代码转载自:http://sinye.iteye.com/blog/763895 

分享到:
评论

相关推荐

    20220125_6651807_99-整本手册_1535509_30005_0.pdf

    20220125_6651807_99-整本手册_1535509_30005_0.pdf

    基于STM32的数控线性稳压电源与恒压恒流电源资料.pdf

    基于STM32的数控线性稳压电源与恒压恒流电源资料.pdf

    基于STM32的智能台灯:自动调整光照强度并语音播报.pdf

    基于STM32的智能台灯:自动调整光照强度并语音播报.pdf

    urw-base35-nimbus-mono-ps-fonts-20170801-10.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统urw-base35-nimbus-mono-ps-fonts-20170801-10.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf urw-base35-nimbus-mono-ps-fonts-20170801-10.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    sql server2022安装教程

    sql server2022安装教程 SQL Server 2022的安装过程相较于之前的版本有所改进,但基本步骤大体相似。以下是一个通用的SQL Server 2022安装教程指南: ### 准备工作 1. **系统要求**:确保您的计算机满足SQL Server 2022的最低系统要求,包括操作系统版本、处理器、内存(RAM)、硬盘空间等。 2. **下载SQL Server 2022安装文件**:从微软官方网站下载SQL Server 2022的安装介质。您可能需要登录您的Microsoft账户,并且根据您的需求选择正确的版本(开发版、标准版或企业版)。 ### 安装步骤 #### 1. 启动安装程序 - 双击下载的安装文件(通常是一个`.exe`文件),启动SQL Server 2022的安装向导。 #### 2. 安装规则检查 - 安装程序会自动检查您的系统是否符合安装SQL Server的要求。如果有任何问题,解决它们后再继续。 #### 3. 选择安装类型 - 在“产品”选项中,选择您想要安装的SQL Server组件。对于大多数用户来说,“数据库引擎服务”是

    智慧园区解决方案-19PPT(39页).pptx

    智慧园区解决方案摘要 在当今这个信息化、智能化浪潮席卷全球的时代,传统园区正面临着前所未有的转型挑战与机遇。智慧园区,作为未来城市发展的重要组成部分,正以其独特的魅力吸引着越来越多的关注。本文将带您领略智慧园区的精髓,探索其如何通过创新技术实现全面升级,为园区管理者、企业及居民带来前所未有的便捷与高效。 一、智慧园区:从挑战到机遇的华丽转身 传统园区在信息基础设施、数据互通、应用创新等方面存在诸多痛点。老旧的网络系统、独立运行的应用子系统,如同一个个信息孤岛,难以形成合力,导致管理效率低下,用户体验不佳。然而,随着云计算、大数据、人工智能等新一代信息技术的飞速发展,智慧园区应运而生。它不仅仅是对传统园区的简单升级,更是一场深刻的变革。通过构建完善的信息基础设施,实现数据的全面感知、传输、处理与分析,智慧园区能够打破信息孤岛,促进资源的高效整合与共享。这不仅极大地提升了园区的运营效率和管理水平,更为园区的可持续发展奠定了坚实的基础。 在智慧园区中,数据中心平台和IOC运营平台扮演着举足轻重的角色。数据中心平台如同园区的“数据心脏”,负责收集、存储、处理园区内各类数据,为决策提供有力支持。而IOC运营平台则是园区的“智慧大脑”,通过对数据的深度挖掘与分析,实现对园区人、物、事件、能耗、环境等关键要素的实时监测与预警。这种全局性的掌控能力,使得园区管理者能够迅速响应各种突发情况,制定更加科学合理的决策。 二、智慧服务:让园区生活更加便捷高效 智慧园区的魅力不仅体现在其强大的数据处理能力上,更在于它能够为园区内的企业、居民提供全方位、个性化的智慧服务。在信息化服务方面,智慧园区通过智慧招商、物业管理、企业画像等功能,为企业提供了更加便捷、高效的入驻与发展环境。智慧招商系统利用大数据分析技术,帮助企业精准定位目标客户,提高招商转化率;物业管理平台则通过集成化的服务流程,实现了对园区内各类设施的智能化管理,提升了物业服务的品质与效率。 与此同时,智能物联体系的应用更是为园区生活带来了翻天覆地的变化。从智慧资产的全生命周期管理,到智慧楼宇的智能化控制;从智慧安防的主动防范与应急联动,到智慧消防的实时监测与预警,智能物联体系将园区内的各类设施紧密连接在一起,形成了一个有机的整体。这种高度集成的智能化管理模式,不仅提升了园区的安全性与运营效率,更为居民带来了更加舒适、便捷的生活体验。 在生活服务体系方面,智慧园区同样不遗余力。智慧餐饮、智慧休闲等创新应用的推出,让园区内的餐饮、购物、娱乐等生活配套服务变得更加智能化、个性化。通过智能餐具、无人便利店、共享睡眠仓等智能设备的应用,居民可以享受到更加便捷、高效的生活服务。这种集智能化、人性化于一体的生活服务体系,让智慧园区成为了真正意义上的“智慧城市”缩影。 三、未来展望:智慧园区引领城市发展新风尚 随着技术的不断进步和应用场景的不断拓展,智慧园区正朝着更加智能化、人性化、绿色化的方向发展。未来,智慧园区将更加注重数据的深度挖掘与价值创造,通过大数据分析、人工智能等技术手段,为园区内的企业提供更加精准、高效的服务。同时,智慧园区还将加强与城市其他领域的深度融合,如智慧交通、智慧环保等,共同推动城市的智慧化进程。 此外,智慧园区还将更加注重用户体验与参与感。通过构建开放、共享的智慧化服务平台,鼓励居民、企业等各方力量积极参与到园区的智慧化建设中来。这种全民参与、共建共享的智慧化建设模式,不仅将进一步提升园区的智慧化水平,更将激发城市的创新活力与发展潜力。 总之,智慧园区作为未来城市发展的重要方向之一,正以其独特的魅力和无限的潜力吸引着越来越多的关注。我们有理由相信,在不久的将来,智慧园区将成为城市发展的新风尚,引领我们迈向更加智能化、人性化的美好未来。

    java-springboot+vue库存管理系统实现源码(项目源码-说明文档).zip

    系统采用B/S架构,集成Spring Boot(后端)、Vue.js(前端)和MySQL(数据库),通过RESTful API实现前后端分离。采用MyBatis-Plus优化数据访问,模块化设计与自动配置提升开发效率,结合数据库索引和读写分离确保性能,Element UI提供友好交互,整体具备高扩展性和可维护性。

    少时诵诗书所所所所大幅度发十大

    少时诵诗书所所所所大幅度发十大

    基于STM32的智能流速流量监测与水泵报警系统(含阈值设置、LCD1602显示、超阈值报警及Proteus仿真).pdf

    基于STM32的智能流速流量监测与水泵报警系统(含阈值设置、LCD1602显示、超阈值报警及Proteus仿真).pdf

    TenAsys INtime RTOS:兼容PC的硬实时操作系统与灵活部署选项及应用

    内容概要:本文介绍了 TenAsys 公司开发的 INtime RTOS 特性、应用和灵活部署选项。作为一款硬实时操作系统,INtime 支持多处理器平台和时间敏感网络 (TSN),具备微秒级的事件响应时间和广泛的硬件支持。文章详细阐述了 INtime 如何独立运行或与 Windows 操作系统共存,展示了其高度确定性和可靠性。此外,还讨论了 INtime 在多核处理环境中的非对称多处理架构以及分布式应用的实现方式,强调了其在网络通信、I/O 接口分区、虚拟化等方面的优势特性。INtime 提供强大的 SDK 工具,便于开发者进行高效的嵌入式系统编程。文中列举了几种典型应用场景,并提及了不同类型的 INtime 许可授权和服务支持情况。 适用人群:从事嵌入式系统开发的技术人员、项目经理、IT咨询师和科研人员。 使用场景及目标:适用于需要高实时性、稳定性和安全性的工业自动化、通信网络、医疗仪器等领域项目。目标是为企业提供一种高效能、稳定的实时操作系统解决方案,帮助企业更好地应对嵌入式系统的多样化需求和技术挑战。 其他说明:该文档还包含了有关 INtime 最小硬件需求、操作系统版本要求以

    uwsgi-plugin-cache-2.0.27-4.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统uwsgi-plugin-cache-2.0.27-4.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf uwsgi-plugin-cache-2.0.27-4.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    智慧园区解决方案-22PPT(52页).pptx

    智慧园区解决方案摘要 在当今这个信息化、智能化浪潮席卷全球的时代,传统园区正面临着前所未有的转型挑战与机遇。智慧园区,作为未来城市发展的重要组成部分,正以其独特的魅力吸引着越来越多的关注。本文将带您领略智慧园区的精髓,探索其如何通过创新技术实现全面升级,为园区管理者、企业及居民带来前所未有的便捷与高效。 一、智慧园区:从挑战到机遇的华丽转身 传统园区在信息基础设施、数据互通、应用创新等方面存在诸多痛点。老旧的网络系统、独立运行的应用子系统,如同一个个信息孤岛,难以形成合力,导致管理效率低下,用户体验不佳。然而,随着云计算、大数据、人工智能等新一代信息技术的飞速发展,智慧园区应运而生。它不仅仅是对传统园区的简单升级,更是一场深刻的变革。通过构建完善的信息基础设施,实现数据的全面感知、传输、处理与分析,智慧园区能够打破信息孤岛,促进资源的高效整合与共享。这不仅极大地提升了园区的运营效率和管理水平,更为园区的可持续发展奠定了坚实的基础。 在智慧园区中,数据中心平台和IOC运营平台扮演着举足轻重的角色。数据中心平台如同园区的“数据心脏”,负责收集、存储、处理园区内各类数据,为决策提供有力支持。而IOC运营平台则是园区的“智慧大脑”,通过对数据的深度挖掘与分析,实现对园区人、物、事件、能耗、环境等关键要素的实时监测与预警。这种全局性的掌控能力,使得园区管理者能够迅速响应各种突发情况,制定更加科学合理的决策。 二、智慧服务:让园区生活更加便捷高效 智慧园区的魅力不仅体现在其强大的数据处理能力上,更在于它能够为园区内的企业、居民提供全方位、个性化的智慧服务。在信息化服务方面,智慧园区通过智慧招商、物业管理、企业画像等功能,为企业提供了更加便捷、高效的入驻与发展环境。智慧招商系统利用大数据分析技术,帮助企业精准定位目标客户,提高招商转化率;物业管理平台则通过集成化的服务流程,实现了对园区内各类设施的智能化管理,提升了物业服务的品质与效率。 与此同时,智能物联体系的应用更是为园区生活带来了翻天覆地的变化。从智慧资产的全生命周期管理,到智慧楼宇的智能化控制;从智慧安防的主动防范与应急联动,到智慧消防的实时监测与预警,智能物联体系将园区内的各类设施紧密连接在一起,形成了一个有机的整体。这种高度集成的智能化管理模式,不仅提升了园区的安全性与运营效率,更为居民带来了更加舒适、便捷的生活体验。 在生活服务体系方面,智慧园区同样不遗余力。智慧餐饮、智慧休闲等创新应用的推出,让园区内的餐饮、购物、娱乐等生活配套服务变得更加智能化、个性化。通过智能餐具、无人便利店、共享睡眠仓等智能设备的应用,居民可以享受到更加便捷、高效的生活服务。这种集智能化、人性化于一体的生活服务体系,让智慧园区成为了真正意义上的“智慧城市”缩影。 三、未来展望:智慧园区引领城市发展新风尚 随着技术的不断进步和应用场景的不断拓展,智慧园区正朝着更加智能化、人性化、绿色化的方向发展。未来,智慧园区将更加注重数据的深度挖掘与价值创造,通过大数据分析、人工智能等技术手段,为园区内的企业提供更加精准、高效的服务。同时,智慧园区还将加强与城市其他领域的深度融合,如智慧交通、智慧环保等,共同推动城市的智慧化进程。 此外,智慧园区还将更加注重用户体验与参与感。通过构建开放、共享的智慧化服务平台,鼓励居民、企业等各方力量积极参与到园区的智慧化建设中来。这种全民参与、共建共享的智慧化建设模式,不仅将进一步提升园区的智慧化水平,更将激发城市的创新活力与发展潜力。 总之,智慧园区作为未来城市发展的重要方向之一,正以其独特的魅力和无限的潜力吸引着越来越多的关注。我们有理由相信,在不久的将来,智慧园区将成为城市发展的新风尚,引领我们迈向更加智能化、人性化的美好未来。

    【Java单机五子棋】

    一个小游戏,所需知识仅有Java基础和GUI

    numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl

    该资源为numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl,欢迎下载使用哦!

    通用算力版(cuda12.4)selective-scan-cuda-oflex.cp310-win-amd64.pyd

    Vmamba selective_scan 在Windows下生成的selective_scan_cuda_oflex库,兼容算力低于7.0高于5.0的老旧GPU,同时支持7.0-9.0 等目前常见GPU; 安装博客参考:https://blog.csdn.net/yyywxk/article/details/145018635

    usbguard-tools-1.0.0-2.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统usbguard-tools-1.0.0-2.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf usbguard-tools-1.0.0-2.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)

    移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业),个人大三期末大作业项目、经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。 移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告(期末大作业)移动应用开发期末作业鸿蒙开发-校园迎新APP项目源码+报告。

    【装机之RH2288HV3 2008win sever】

    装机之RH2288HV3 2008win sever

    详解DeepSeek核心技术2025.pdf

    详解DeepSeek核心技术2025.pdf

    基于STM32的温湿度、烟雾浓度、振动频率仿真系统:包含源码、仿真、原理图.pdf

    基于STM32的温湿度、烟雾浓度、振动频率仿真系统:包含源码、仿真、原理图.pdf

Global site tag (gtag.js) - Google Analytics