sax解析xml文件(一)

Sax解析xml中的某个(一部分报文节点)循环组的内容 立即下载

 xml一种格式严谨,通用,表述数据良好的语言,它有存储数据的功能,这一点和数据库相似.

dom和sax是两种不同的解析xml文件的机制.在解析大型xml文件时,宜选用sax技术.

 

下面以判断users.xml文件中,是否存在id 为"003"的用户为例,简要介绍一下sax技术.

首先准备一个xml文件.usrs.xml  代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <users>
  3.     <user id="001">
  4.         <username>james</username>
  5.         <password>james</password>
  6.     </user>
  7.     <user id="002">
  8.         <username>adu</username>
  9.         <password>adu</password>
  10.     </user>
  11.     <user id="003">
  12.         <username>root</username>
  13.         <password>root</password>
  14.     </user><user id="004">
  15.         <username>lishanli</username>
  16.         <password>lishanli</password>
  17.     </user>
  18. </users>

创建IsExistedUserHandler类,它派生自DefaultHandler.代码如下:

  1. package org.james.sax.util;
  2. import org.xml.sax.Attributes;
  3. import org.xml.sax.SAXException;
  4. import org.xml.sax.helpers.DefaultHandler;
  5. public class IsExistedUserHandler extends DefaultHandler {
  6.     private String id;
  7.     public IsExistedUserHandler(String id){
  8.         this.id=id;
  9.     }
  10.     @Override
  11.     public void startElement(String url, String localName, String qName,
  12.             Attributes atts) throws SAXException {
  13.         if(atts!=null){
  14.             String userID=atts.getValue("id");
  15.             if(userID!=null){
  16.                 if(userID.equals(id)){//当解析到id属性与构造函数中的id一样时,说明,存在该用户.
  17.                     throw new SAXException("己经存在该用户!");//由于,sax在解析过程中不能停止,此时却需要停止,可以采用/抛出异常的方式,终止解析.
  18.                 }
  19.             }
  20.         }
  21.     }
  22.     
  23. }

好了,现在写一个测试类,测试一下吧

  1. package org.james.sax;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import javax.xml.parsers.ParserConfigurationException;
  5. import javax.xml.parsers.SAXParser;
  6. import javax.xml.parsers.SAXParserFactory;
  7. import org.james.sax.util.IsExistedUserHandler;
  8. import org.xml.sax.SAXException;
  9. public class UserService {
  10.     private static InputStream IN =UserService.class.getClassLoader().getResourceAsStream("users.xml");
  11.     private SAXParser saxParser;
  12.     public UserService(){
  13.         try {
  14.             saxParser=SAXParserFactory.newInstance().newSAXParser();
  15.         } catch (ParserConfigurationException e) {
  16.             e.printStackTrace();
  17.         } catch (SAXException e) {
  18.             e.printStackTrace();
  19.         }
  20.     }
  21.     public boolean isExistedUser(String id){
  22.         IsExistedUserHandler ieuh=new IsExistedUserHandler (id);
  23.         try {
  24.             saxParser.parse(IN, ieuh);
  25.         } catch (SAXException e) {
  26.             System.out.println(e.getMessage());
  27.             return true;
  28.         } catch (IOException e) {
  29.             e.printStackTrace();
  30.         }
  31.         return false;
  32.     }
  33.     public static void main(String... args){
  34.         UserService us=new UserService();
  35.         System.out.println(us.isExistedUser("003"));
  36.     }
  37. }

看看控制台输出什么?

-------------------------------

己经存在该用户!
true
--------------------

哈哈,说明成功了!

 

数学建模传染病模型_【数学建模】之传染病模型 点击【拇指笔记】,关注我的公众号。SE模型缺点:没有考虑接触到的人中还有一部分病人,所以所有人并不会全部被感染。建立模型:已感染人数(病人)每个病人每天有效接触(足以使人致病)人数为根据(1)(2)可以建立模型:等式两边同时除以\Delta t由导数定义有同时,取\Delta t = 1天由(1)(5)两式可得最终的模型:Logistic模型缺点:区分已感染者(病人)和未感染者(健康人)... 阅读详情

相关推荐

GNSS - PPP软件 - GAMP 在VS2019/2022下完成调试、跑通程序(超详细!)

WIN32;_DEBUG;_CONSOLE;O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3。

qq_43381998的博客 8248

Java之xml解析(Sax方式)

Sax(Simple API for XML)采用事件驱动的方式边读边解析文档。

qq_44166712的博客 3241

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统,记录配置过程

Jack的小窝 5942

​SAX方式解析XML文档​

SAX方式解析XML文档 一、SAX (Simple API for XML)   SAX解析方式是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。     优点: 无需将整个文档加载到内存中, 所以内存消耗少的 ,适合解析特别大的 XML文件。 二、步骤 创建解析工厂:通过SAXParaserFactory.newInstanc...

qq_59212717的博客 1222

保姆级教程:用Altium Designer 24从零画一块PCB(附完整库文件与避坑清单)

本文提供了一份详细的Altium Designer 24(AD24)PCB设计教程,从工程创建到最终文件输出,涵盖元件库管理、原理图设计、PCB布局布线等全流程。特别适合初学者,包含STM32最小系统板的实战案例,附完整库文件和避坑清单,帮助用户快速掌握AD24的核心功能与技巧。

weixin_27697385的博客 249

从零到一:手把手教你用DaVinci Configurator配置一个完整的AUTOSAR接口通信实例

本文详细介绍了如何使用DaVinci Configurator工具配置AUTOSAR接口通信实例,从环境准备到SWC端口定义、BSW模块配置,再到通信验证的全过程。通过实战案例'车窗控制'功能模块,帮助开发者快速掌握AUTOSAR架构下的接口通信配置技巧,提升汽车电子软件开发效率。

weixin_42557830的博客 451

SAX解析XML文件

SAX解析XML文件

m0_46619764的博客 1901

vue引入使用腾讯地图

// 引入鹅厂地图 initMap(lat = 0.0000000, lng = 0.0000000) { // 定义地图中心点坐标- var center = new TMap.LatLng(lat, lng) // 定义map变量,调用 TMap.Map() 构造函数创建地图 map = new TMap.Map(document.getElementById('txMapBox'), { center: center, // 设.

LiangRZ 4536

SAX解析XML

SAX解析XML 1.XML(Extensible Markup Language 可扩展标记语言),XML是一个以文本来描述数据的文档。 XML文档示例: <?xml version="1.0" encoding="UTF-8" ?> <people> <person personId="E01"> <name>Tony Blair</name> <address>10 Downing Stre

七一 1654

Flink on k8s 环境搭建(一)

Flink on Yarn的环境搭建过程中,需要进行配置较多,且需要搭建zookeeper Hadoop Yarn 等相关组件,安装流程比较复杂,集群出现问题重新安装的流程也比较复杂,且Yarn的3个节点中 只能起了 3个resourceManager和1个NodeManager,Flink 作业申请资源时只能 向NodeManager的节点申请资源,整体有资源瓶颈的隐患(后继flink作业会越来越多),现在尝试进行Flink on k8s 的环境搭建。

wangqiaowq的博客 3413

K型热电偶负电压采集难题?3种运放电路设计方案对比(含Multisim仿真)

本文针对K型热电偶在低温测量中产生的负电压采集难题,详细对比了三种运放电路设计方案,包括双电源运放反相放大、单电源仪表放大器和差分放大电路,并结合Multisim仿真数据分析了各方案的性能差异。文章还提供了PCB布局和抗干扰设计的实战技巧,帮助工程师解决热电偶信号采集中的核心挑战。

postgres8guard的博客 1018

java使用SAX解析器解析XML文件

SAX,也称为Simple API for XML,是jdk自带的 用于解析 XML 文档 API。它是一种基于流的解析方式,边读取XML边解析,并以事件回调的方式让调用者获取数据。因为是一边读一边解析,所以无论XML有多大,占用的内存都很小,所以 SAX 具有高效的内存管理。 三、XmlRow类 四、SAXHandler类 五、测试 输出: 参考:Parsing an XML File Using SAX ParserParsing an XML File Using StAXexcel-xml-

西凉的悲伤博客 4283

借助Claude实现Playwright的自动化(MCP Server)

MCP Server自己开发也是可以的,现在也有很多开箱即用的MCP Server,可以在https://github.com/modelcontextprotocol/servers中查找。

Criss@陈磊 4228

XML文件解析技术:SAX解析(一)

SAX解析:非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。    选择 DOM 还是选择 SAX ? 对于需要自己编写代码来处理 X

java_user的专栏 2425

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android开发进阶(一)XML文件解析之SAX模式解析

SAX解析XML: SAX基本原理: 采用事件驱动解析XML文件,以流式方式逐行的去读,它不需要解析完整个文档,在按内容顺序解析文档的过各中,SAX会判断当前讲到的字符是否合法XML语法中的某部分,如果符合就触发事件(例如startDocument()、endDocument()诸如此类的事件),它的特点是不会记录前面所碰到的标签,并且它是一个解析速度快并且占用内存少的XML解析器, SAX

90worker 2851

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android下Xml解析技术(一)、SAX解析Xml文件

Xml文件有许多解析方式,在学习J2EE中就学过很多,比如DOM,DOM4j,SAX,JDOM等等。   DOM:文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。 JDOM:JDOM是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序。它的设计包含 Java 语言的语法乃至语义。 DOM4j...

android开发笔记 436

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java对XML文件解析之SAX解析(一)

Java对XML文件的解析常用的有两种方式,分别是SAX解析和Document解析。 这里介绍的是SAX解析,运用的API是Java自带的API,位于javax.xml.parsers 下。 使用的类有SAXParserFactory,SAXParser。 以下为代码测试过程: package com.alzw.xml; import java.io.File; import java....

weixin_42785286的博客 364

java 解析XML文件(DOM & SAX)(一)

XML :可扩展标记语言,XML是一个以文本来描述数据的文档。 XML 用途: 1:充当显示数据。2:XML描述数据并在联系服务器系统的其余部分之间传递。 XML 是信息封装,和消息传递技术。 解析XML文件 1:DOM解析: 解析原理: 在处理DOM解析的时候,需要读入整个XML文档,然后在内存中创建DOM树,生成DOM树的每个NODE对象,当文档相对较小的时候,不会出现问题,当文档

WannerWang的博客 404

xml&dom_sax_dom4j学习笔记(一)SAX解析XML文件

SAX 解析XML:          SAX与DOM不同,在解析XML文件时是边解析边处理的。解析过程为先生产一个解析工厂(SAXParserFactory),由工厂生产一个解析器(SAXParser),再由解析器生产阅读器(XMLReader),通过阅读器的parser(String systemId)方法解析XML文件。 SAX2核心的处理程序基类有四个ContentHand

Shally's Room 506

XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容

一、新建Demo2类: import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * 读取contact.xml文件,完整输出文档内容 * @author APPle * */ public class Demo2 { publi

态度决定高度A=X+Y+Z 2171

java--SAX解析xml

有下面的xml文件,如何解析<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> </boo

longtype的博客 427

SAX解析XML例子

import java.io.FileReader; import java.sql.Connection; import java.sql.Statement; import java.util.HashMap; import java.util.Iterator; import org.xml.sax.Attributes; import org.xml.sax.InputSource; im

bigkimna的专栏 840

java 解析自定义xml_Java Sax XML解析器,解析XML标记内的自定义“值”?

在此之前,我没有对XML进行过多的工作,所以也许我对适当术语的不了解正在损害我对如何执行此操作的搜索.我有下面的代码片段,用于解析一个XML文件,如下所示.问题在于,它仅在< Tag> Value< / Tag>中选择XML值.但不适用于以下需要获取TagValue值的情况,在这种情况下,该值将为“ Russell Diamond”.如果有人可以提供有关如何获得自定义值的帮...

weixin_31714129的博客 150
上一篇: struts2学习笔记之转换器实现语言切换
下一篇: sax解析xml文件(三)
JavaChenYang
博客等级 码龄20年 35粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值