使用SAX解析xml文档
1.首先,在main方法中解析xml文档,具体代码如下:
import org.w3c.dom.*; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; public class Main { public static void main(String[] args) throws Exception {
//创建一个文档解析器工厂
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser(); Handler handler=new Handler();
parser.parse("src/server.xml",handler);
}
}
其中,解析时parser.parse("src/server.xml",handler);第一个参数是xml文档的地址,第二个参数是具体的以什么规则解析这个xml文档。
2.重写Handler类,以自由操纵如何具体的解析xml文档的具体值
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler; public class Handler extends DefaultHandler { //全局变量用于存储书籍的编号
int bookIndex=0;
/*开始解析文档*/
@Override
public void startDocument() throws SAXException {
super.startDocument();
System.out.println("开始解析文档");
}
/*结束解析文档*/
@Override
public void endDocument() throws SAXException {
super.endDocument();
System.out.println("结束解析文档");
}
/*解析文档中所有的开始标签*/
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
//开始解析book元素的属性
if("book".equals(qName)){
bookIndex++;
System.out.println("==========开始解析第"+bookIndex+"本书============");
//输出book元素的id属性,已知属性名,根据属性名获取属性值
//System.out.println("book的属性值是"+attributes.getValue("id")); //不知道属性名,只能遍历所有属性
int num=attributes.getLength();
for(int i=0;i<num;i++){
System.out.print("第"+(i+1)+"个属性名是"+attributes.getQName(i));
System.out.println(" 第"+(i+1)+"个属性值是"+attributes.getValue(i));
}
}
if(!qName.equals("book")&&!qName.equals("")){
System.out.println(qName);
} }
/*解析文档中所有的结束标签*/
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if("book".equals(qName)) {
System.out.println("============结束解析第" + bookIndex + "本书==========");
}
} @Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
String s=new String(ch,start,length);
s=s.trim();
if(!s.equals("")){
System.out.println(s);
} }
}
使用SAX解析xml文档的更多相关文章
- SAX解析XML文档——(二)
SAX从上向下解析,一行一行解析.节省内存,不适合CRUD. XML文档: <?xml version="1.0" encoding="UTF-8"?&g ...
- Sax解析xml文档
测试的xml数据: <?xml version="1.0" encoding="utf-8" ?> <note> <to>G ...
- Java高级特性 第14节 解析XML文档(2) - SAX 技术
一.SAX解析XML文档 SAX的全称是Simple APIs for XML,也即XML简单应用程序接口.与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式.当使用S ...
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- 浅谈用java解析xml文档(二)
上一文中总结了dom解析xml文档的方式,本文开始总结使用SAX解析xml 的方式及它的优缺点! SAX(Simple API for XML),是指一种接口,或者一个软件包. 首先我们应该知道SAX ...
- 四种生成和解析XML文档的方法详解
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术
一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...
- 大杂烩 -- 四种生成和解析XML文档的方法详解
基础大杂烩 -- 目录 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J DOM:在现在的Java JDK里都自带了,在xml-apis.jar包 ...
- 使用dom4j解析XML文档
dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...
随机推荐
- ios 对于AFNetworking3.0的基本使用
AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持.AFHTTPRequestOperationManager已经抛弃,所以需要对数据请求进行改动. G ...
- typeof 和 instanceof apply与call简单用法以及判断数组的坑
1 typeof 和 instanceof var array = [];平时如果判断一个对象是否为数组,可能你会用 typeof array,但是输出为“object”. typeof 一般只能返回 ...
- Swagger2基本注解使用
@Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" value="该参数没什么意义,在UI界面上也看到,所以不需要配置&q ...
- selenium批量执行脚本操作
import unittest import os from HTMLTestRunner import HTMLTestRunner # 待执行用例的目录 def allcase(): #引入执行用 ...
- Codeforces Round #532 (Div. 2) F 线性基(新坑) + 贪心 + 离线处理
https://codeforces.com/contest/1100/problem/F 题意 一个有n个数组c[],q次询问,每次询问一个区间的子集最大异或和 题解 单问区间子集最大异或和,线性基 ...
- 理解存储引擎MyISAM与InnoDB
1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不 ...
- PowerShell工作流学习-6-向脚本工作流添加检查点
关键点: a)检查点是工作流当前状态的快照,其中包括变量的当前值以及在该点生成的任何输出,这些信息保存在磁盘. b)检查点数据保存在托管工作流会话的计算机的硬盘上的用户配置文件中. c)当工作流通用参 ...
- Runnable和Callable 的区别
Runnable和Callable 的区别 01.Runnable接口中只有一个run()没有返回值 没有声明异常 Callable接口中只有一个call()有返回值 有声明异常 02.Calla ...
- win10更新永久关闭
最烦开发的时候windows来个更新 http://www.ghost580.com/win10/2016-10-21/17295.html
- 5随机到7随机的C++实现
一.5随机到7随机 //给定条件 int Rand1To5(){ + ; } //实现代码,使用插空法和筛的过程 int Rand1To7(){ ; do{ tmp = (Rand1To5() - ) ...