java--SAX解析xml

【Java编程】SAX XML Parser解析、生成XML文件 1、优缺点 优点: SAX 从根本上解决了 DOM 在解析 XML 文档时产生的占用大量资源的问题。其实现是通过类似于流解析的技术,通读整个 XML 文档树,通过事件处理器来响应程序员对于 XML 数据解析的需求。由于其不需要将整个 XML 文档读入内存当中,它对系统资源的节省是十分显而易见的,它在一些需要处理大型 XML 文档以及性能要求较高的场合有起了十分重要的作用。支持 XPath 查询 阅读详情

有下面的xml文件,如何解析

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book id="1">
        <name>王小二的妖孽人生</name>
        <author>乔治马丁</author>
        <year>2014</year>
        <price>89</price>
    </book>
    <book id="2">

        <name>安徒生童话</name><year>2004</year>
        <price>77</price>
        <language>English</language>
    </book>
</bookstore>

首先创建sax相关类

package saxXML;

import java.io.IOException;
import java.util.ArrayList;

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

import org.xml.sax.SAXException;

import sax3.Book;
import saxXML2.SaxHandler;

public class SaxTest {

    public static void main(String[] args) {

        SAXParserFactory factory = SAXParserFactory.newInstance();
        try {
            SAXParser parser = factory.newSAXParser();

            SaxHandler handler = new SaxHandler();

            parser.parse("booKs.xml", handler);

            ArrayList<Book> arrayList=handler.getArrayList();
            System.out.println("数组的大小"+arrayList.size());
            for (Book book : arrayList) {
                System.out.println("图书序列"+book.getId());
                System.out.println("["+book.getName()+"]");
                System.out.println("作者"+book.getAuthor());
                System.out.println("价格"+book.getPrice());
                System.out.println("年份"+book.getYear());
            }







        } catch (ParserConfigurationException | SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

实现DefaultHandler 类

package saxXML2;

import java.util.ArrayList;

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

import sax3.Book;

public class SaxHandler extends DefaultHandler {
      String valueString="";
      Book book=null;
      ArrayList<Book> bookList=new ArrayList<Book>();
      public ArrayList<Book> getArrayList() {
        return bookList;
    }

@Override
public void startDocument() throws SAXException {
    // TODO Auto-generated method stub
    super.startDocument();
    System.out.println("startDocument");
}
@Override
    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.endDocument( );
        System.out.println("endDocument");
    }
    @Override
        public void startElement(String uri, String localName, String qName,
                Attributes attributes) throws SAXException {
            // TODO Auto-generated method stub
            super.startElement(uri, localName, qName, attributes);
            if (qName.equals("book")) {//对于book节点
                book=new Book();
              for (int i = 0; i < attributes.getLength(); i++) {
                System.out.print(attributes.getQName(i)+ "   ");
                System.out.println(attributes.getValue(i));
                if (attributes.getQName(i).equals("id")) {
                    book.setId(attributes.getValue(i));//这里属性值就是id
                }
            }
            }                           //对于其他节点,滤掉--
            if (!qName.equals("book")&&!qName.equals("bookstore")) {
                System.out.print("(qName)"+qName);
            }
        }
    @Override
        public void endElement(String uri, String localName, String qName)
                throws SAXException {
            // TODO Auto-generated method stub
            super.endElement(uri, localName, qName);
            //找那两本书的book的结束标记
            if (qName.equals("book")) {

                System.out.println();
                System.out.print("=====遍历一本书结束");
                bookList.add(book);
                book=null;
            }
            else if (qName.equals("name")) {
               book.setName(valueString);
            }
            else if(qName.equals("price")) {
                book.setPrice(valueString);
            }
            else if (qName.equals("author")) {
                book.setAuthor(valueString);
            }
            else if (qName.equals("lanuage")) {
                 book.setAuthor(valueString);
            }
            else if (qName.equals("year")) {
                book.setYear(valueString);
            }       
        }
   @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        // TODO Auto-generated method stub
        super.characters(ch, start, length);
       valueString=new String(ch,start,length) ;
       if (!valueString.trim().equals("")) {
        System.out.println("(charactors)"+valueString);
      }  
   }
}

书籍类用于存放xml里面对象

package sax3;



public class Book {
 private String id;
 private String name;
 private String author;
 private String year;
 private String price;
 private String lanuage;
public String getId() {
    return id;
}
public void setId(String string) {
    this.id = string;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getAuthor() {
    return author;
}
public void setAuthor(String author) {
    this.author = author;
}
public String getYear() {
    return year;
}
public void setYear(String year) {
    this.year = year;
}
public String getPrice() {
    return price;
}
public void setPrice(String price) {
    this.price = price;
}
public String getLanuage() {
    return lanuage;
}
public void setLanuage(String lanuage) {
    this.lanuage = lanuage;
}


}
Java使用SAX解析XML实战 目前解析XML的方式有很多,常用的有Dom,jdom,dom4j,SAX等方式解析xml文件。各种方法应用场景不太一致。下面简单介绍一下Dom和SAX解析Xml文件的应用场景。1、使用Dom解析Xml,每次需要把xml文件整个加载到内存中,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。应用场景如下:a:xml文件或者xml流内容较少,b:机器处理能力较强(硬盘,内... 阅读详情

相关推荐

ESP32-S3开发板实战:5分钟搞定智能门铃的音视频通话功能(附源码)

本文详细介绍了如何利用乐鑫ESP32-S3开发板快速实现智能门铃的实时音视频通话功能。通过ESP-ADF框架和RTC服务,开发者可在五分钟内完成环境搭建与核心功能调试,并附有源码和关键配置详解,为嵌入式音视频应用开发提供了高效实践路径。

web99的专栏 527

java sax解析xml_Java Sax解析xml

1. Java Sax解析是按照xml文件的顺序一步一步的来解析,在解析xml文件之前,我们要先了解xml文件的节点的种类,一种是ElementNode,一种是TextNode。如下面的这段book.xmlthinking in java85.5Spring in Action39.0其中,像、这种节点就属于ElementNode,而thinking in java、85.5这种就属于Text...

weixin_28785681的博客 270

pyautogui库详细教程,逐行注释(附项目实战:基于图像识别实现崩坏星穹铁道自动化测试)

本文包含了pyautogui的使用方法与常见问题指南,随文附带对游戏实现的自动化项目源码与说明文档

m0_53043024的博客 1万+

Java SAX生成和解析XML

SAX解析 场景:从上往下线性读取xml时 解析比较大的xml文档时 优点:读取速度快,内存消耗小 缺点:只能知道当前节点的信息,如需知道其它信息,需要自己编码实现 SAX解析步骤 第一步:创建sax转换工厂 SAXTransformerFactory factory = (SAXTransformerFactory)SAXTransf...

p812438109的专栏 1万+

操作系统笔记(含王道计算机考研——操作系统课件)

操作系统(OS) 笔记根据B站王道计算机考研——操作系统视频整理所得,视频链接:https://b23.tv/0I2qex 视频中所用课件:链接:https://pan.baidu.com/s/101bFWm0Tv0emNpEneidYPA 提取码:y3dd 1.计算机系统概述 1.简介 什么是操作系统? 操作系统(Operating Ststem, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是

拧发条鸟的博客 6万+

吹气压力传感器US6310 US6330调试

更换压力传感器, 从US6310 更换为US6330。 6310有一个准备好引脚,AD转换完成后会给MCU一个脉冲 而6330就没有这个功能,6330这个引脚是用来选择SPI还是I2C接口的。(6330没有复位引脚,内部有POR功能) 因此在实现上是有根本区别的, 其它方面使用的命令也不一样, 6310 A8 A9两条命令,一个命令模块醒来,一个命令模块休眠, 6330只有一条命令AA, 命令模块开始转换。 针对这2个模块作为2种处理方法, 1. 6310,可以设置一...

明天乌儿会歌唱 2023

Java使用SAX解析xml文件详解

xml文件 xml文件是一种可扩展语言,专门用来存储和传输数据,它与html文件类,但是不用于显示文件内容,只是用来存储和传输文件。它的格式非常简单。大家可以自行百度 SAX方法解析xml文件 SAX方法是一种流解析的方法,它是以顺序的方式从头至尾的解析xml文件,过一遍之后就结束了,所以应该注意在解析的过程中不断的存储数据。 我们要解析的xml文件内容为: <?xml version="1...

结庐境的博客 3262

122、Android Camera HAL3 框架:Request、Result、Metadata 的异步管道模型

本文深入剖析了Android Camera HAL3框架中的异步管道模型,围绕Request、Result和Metadata三个核心要素展开。作者通过实际案例(黑屏闪退问题)切入,揭示了异步模型中常见的帧序错乱陷阱。文章详细阐释了三个角色的交互机制,指出HAL3采用生产者-消费者模式的关键特征:Request与Result一一对应但不保证顺序。针对开发实践,总结了三个必须加锁的场景和回调函数的锁使用禁忌,并给出解决帧序问题的具体方案(独立帧号生成器)。最后提出五项经验性建议,强调异步模型带来的灵活性与复杂性

sundong_81的博客 214

java解析sax_Java基础之SAX解析XML

1. Java解析XML简介Java库中提供了两种XML解析器:像文档对象模型(Document Object Model,DOM)解析器这的树型解析器(tree parse),它们将读入的XML文档转换成树结构。像XML简单API(Simple API for XML,SAX)解析器这样的流机制解析器(streaming parser),它们在读入XML文档时生成相应的事件。2. SAX简介SA...

weixin_35275162的博客 617

java毕设:基于springboot的服装搭配推荐系统(springboot+layui+jq+html)1011

项目描述 基于springboot的服装搭配推荐系统: 基于天气服装搭配推荐系统为用户提供未来一周的天气预报情况,并根据预报天气和用户现有的服装进行着装搭配,以及显示未来6小时精确温度数据为用户提供更精确的天气信息便于用户在出行前对自己的着装进行调整,每日用户可以根据自己当日对系统推荐的着装搭配舒适度进行反馈,系统将根据用户的反馈对用户着装的保暖系数进行相应调整,通过多次的反馈和调整形成对用户着装的个体化和精确化的推荐。 本系统可以为用户提供以下服务: 1.未来五天的天气信息显示; 2.未来六小时内天气温度

qq_2537071370的博客 3647

NX二次开发PK获取对象类型

PK_ENTITY_ask_class(),获取对象类型建议用这个函数,比较通用,包含所有对象类型,可以替代UF_MODL_ask_edge_type(),UF_MODL_ask_body_type(),UF_MODL_ask_face_type()等函数。

qq_39541524的博客 827

java sax 读取xml_Java Sax解析xml

一、概述SAX,全称Simple API for XML,是一种以事件驱动的XMl API,是XML解析的一种新的替代方法,解析XML常用的还有DOM解析,PULL解析(Android特有),SAX与DOM不同的是它边扫描边解析,自顶向下依次解析,由于边扫描边解析,所以它解析XML具有速度快,占用内存少的优点,对于Android等CPU资源宝贵的移动平台来说是一个巨大的优势。SAX的优点:解析速度...

weixin_42118160的博客 384

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

通用SAX解析XML为Java对象

前言 ​ 有时候经常需要解析XML文件中的数据,将数据转化成**Java中的对象,为了不重复编写代码,能不能有一个通用的XML解析类?即对于任意XML文件,均可以解析成对应的Java**对象? SAX解析 ​ SAX (Simple API for XML):该规范和DOM规范有着明显的区别,虽然SAX也是一套对XML文档进行分析的规范,但是其并不是基于XML文档的树形结构的,而是以数据流的方...

沧浪之水的博客 1005

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

Java基础之SAX解析XML

1. Java解析XML简介 Java库中提供了两种XML解析器: 像文档对象模型(Document Object Model,DOM)解析器这的树型解析器(tree parse),它们将读入的XML文档转换成树结构。 像XML简单API(Simple API for XML,SAX)解析器这样的流机制解析器(streaming parser),它们在读入XML文档时生成相应的事件。 2. S...

weixin_33747129的博客 202

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java sax_在java中使用sax解析xml

在java中,原生解析xml文档的方式有两种,分别是:Dom解析和Sax解析Dom解析功能强大,可增删改查,操作时会将xml文档以文档对象的方式读取到内存中,因此适用于小文档Sax解析是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档本文主要讲解Sax解析,其余放在后面Sax采用事件驱动的方式解析文档。简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回...

weixin_30591519的博客 214

java使用SAX解析XML文件

XML (Extensible Markup Language可扩展标记语言),XML是一个以文本来描述数据的文档。 XML技术的用途: (1)充当显示数据(以XML充当显示层) (2)存储数据(存储层)的功能 (3)以XML描述数据,并在联系服务器与系统的其余部分之间传递。 从某种角度讲,XML是数据封装和消息传递技术。 SAX解析XML SAX是Simple API for XML的缩写 SAX是读取和操作XML数据更快速、更轻量的方法。SAX 允许您在读取文档时处理它,从而不必等待整个文档被存储之后才

java编程学习_java基础教程_booyzhang的博客 309

Java xml文件解析 sax 解析笔记

一般为以下步骤: 1、得到xml文件对应的资源,可以是xml的输入流,文件和uri 2、得到SAX解析工厂(SAXParserFactory) 3、由解析工厂生产一个SAX解析器(SAXParser) 4、传入输入流和handler给解析器,调用parse()解析 //1.创建解析工厂 SAXParserFactoryfactory=SAXParserF...

Matthew的博客 395

【XML和Java】Java程序+SAX对XML的解析输出

【XML和Java】Java程序+SAX对XML的解析输出;xml文件可以用来存放数据库连接必要的信息。程序员可以通过解析该xml文件得到数据库连接的必要信息,并且在后期更改数据库连接时也能更方便,增强程序的可读性。

peng_YuJun的博客 1105

在java中使用sax解析xml

在java中,原生解析xml文档的方式有两种,分别是:Dom解析和Sax解析 Dom解析 功能强大,可增删改查,操作时会将xml文档以文档对象的方式读取到内存中,因此适用于小文档 Sax解析 是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档 本文主要讲解Sax解析,其余放在后面 Sax采用事件驱动的方式解析文档。简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回回读取) 在看电影的过程中,每遇到一个情节,一段泪水,一次擦肩,你都会调动大脑和神经去接收或处理这些

weixin_53341657的博客 389

java xml解析_XMl的理解以及SAX解析流程

XML一般用来存储数据作为数据存储的一种格式XML还可以用于作为软件的参数配置这里讲下如何理解java中的相对路径在java中如何获取当前的路径,当我们知道当前的路径了以后我们就可以使用绝对路径了package cn.jd.server.basic; import java.io.IOException; import javax.xml.parsers.ParserConfiguration...

weixin_39934302的博客 95

Java之xml解析(Sax方式)

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

qq_44166712的博客 3241

Java解析XML(DOM解析和SAX解析)

前言:在程序中访问和操作XML文件一般有两种模型:DOM(文档对象模型)和流模型;在本篇文章中分别对应DOM解析和SAX解析。 1 .DOM解析与SAX解析的相关知识点 1.1 DOM 文档对象模型(Document Object Model,简称DOM),是W3C制定的标准接口规范,是一种处理HTML和XML文件的标准API。 将HTML或XML文档转化为DOM树的过程称为解析(parse)。HTML文档被解析后,转化为DOM树,因此对HTML文档的处理可以通过对DOM树的操作实现。DOM模型不仅描述了

MrYushiwen的博客 2158

sax xml java_java中使用sax解析xml的解决方法

在java中,原生解析xml文档的方式有两种,分别是:Dom解析和Sax解析Dom解析功能强大,可增删改查,操作时会将xml文档以文档对象的方式读取到内存中,因此适用于小文档Sax解析是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档本文主要讲解Sax解析,其余放在后面Sax采用事件驱动的方式解析文档。简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回...

weixin_30789475的博客 145

java sax解析复杂xml_SAX解析复杂的xml字符串

简单的xml我们可以通过转成javaBean实现解析。但是开发中xml一般都是一层嵌套一层的。转成javaBean明显是无法进行解析的。这里引入Sax解析。首先我们需要jdom.jar,没有的朋友可以从这里下载http://www.jdom.org/news/index.html。废话不多说直接上例子。import java.io.IOException;import java.io.String...

weixin_39796533的博客 312

java sax生成xml报文_SAX解析和生成XML文档

一、前言SAX操作xml是基于事件来完成的,自己只负责调用解析的方法,然后具体解析操作都是交给DefaultHandler处理者来完成的,总的来说使用SAX解析和生成xml文档还是比较方便的 。二、准备条件因为SAX是jdk自带的解析方式,所以不用添加jar包引用。三、使用SAX实战1、解析xml文档实现思路:<1>先由SAXParserFactory这个工厂的实例生产一个SAXPar...

weixin_32576389的博客 838
上一篇: Comparable 和 Comparator
下一篇: FLASH、EPPROM、RAM等存储器
剑之所向
博客等级 码龄11年 228粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值