xml解析之SAX解析基本用法
来源:互联网 发布:网络定制蛋糕 编辑:程序博客网 时间:2024/05/16 17:09
一个xml文档除了我们人去读写之外,我们还希望通过程序去操作xml文档,利用程序去增删改查xml文档的过程就称作xml编程,对xml文档解析主要有三种解析方式:SAX解析,dom解析以及pull解析。
虽然SAX解析不是官方标准,但它是xml社区事实上的标准,几乎所有的xml解析器都支持他。
我们首先来介绍SAX解析xml文档。我们有一个xml文档。
<books> <book> <title>java从入门到放弃</title> <price>10元</price> <author>张三</author> </book> <book> <title>C语言从入门到放弃</title> <price>12元</price> <author>李四</author></book></books>
一个SAX解析过程当中有两个组件,一个是读取器(解析器)还有一个是事件处理器。解析器部分我们就不用操心了,jdk中已经帮我们做好了。我们要做的就是编写事件处理器的代码。SAX解析的过程为:在解析xml文档时,解析器会去逐行的扫描xml文档,当扫描到解析器当中的任意一个内容时,都会触发事件处理器当中的相应的方法。我们可以用下面这张图片表示SAX解析的处理过程
了解了SAX解析的过程,我们下面用java语言实现这个过程:
例如:我们要打印出这个xml文档中的所有的书的名字:
package com.hhuc.Sax;import java.io.IOException;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import org.xml.sax.helpers.DefaultHandler;public class Demo {public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {SAXParserFactory spf=SAXParserFactory.newInstance();//使用SAXParserFactory创建SAX解析工厂SAXParser sp=spf.newSAXParser();//通过SAX解析工厂得到解析器对象XMLReader xmlreader=sp.getXMLReader();//通过解析器对象的到一个xml的读取器xmlreader.setContentHandler(new DefaultHandler(){private String elename=null;@Overridepublic void startElement(String uri, String localName,String qName, Attributes attributes) throws SAXException {elename=qName;}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {elename=null;}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {if("title".equals(elename))System.out.println(new String(ch,start,length));}});xmlreader.parse("book.xml");//解析xml文档}}
3 0
- xml解析之SAX解析基本用法
- 解析xml之--SAX
- 解析xml之--SAX
- 解析xml之--SAX
- XML解析之SAX
- XML 解析之SAX
- XML解析之SAX
- 【xml之SAX解析】
- XML解析之SAX
- 解析XML之SAX
- xml之SAX解析
- xml之sax解析
- xml解析之sax
- XML解析之SAX
- xml解析之SAX
- XML之sax解析
- XML解析之SAX
- xml之SAX解析
- DA输出模拟
- 基于Linux安全验证添加自定义PAM模块
- 数据结构实验之二叉树六:哈夫曼编码
- JDBC高级操作
- ROS 使用自带和usb摄像头获取图像
- xml解析之SAX解析基本用法
- MySQL必知必会-7用通配符进行过滤
- 前端培训班出身——吐槽下16年的艰辛
- POJ 3511 Fermat's Christmas Theorem 可能会
- 做电商运营其实就是做这两件事——非套路向
- mv88e6165 RGMII模式下配置 及MAC与PHY简介
- 输出模拟
- 447. Number of Boomerangs | 点之间的距离相等的数量
- spring redis 相关配置总结