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文档的更多相关文章

  1. SAX解析XML文档——(二)

    SAX从上向下解析,一行一行解析.节省内存,不适合CRUD. XML文档: <?xml version="1.0" encoding="UTF-8"?&g ...

  2. Sax解析xml文档

    测试的xml数据: <?xml version="1.0" encoding="utf-8" ?> <note> <to>G ...

  3. Java高级特性 第14节 解析XML文档(2) - SAX 技术

    一.SAX解析XML文档 SAX的全称是Simple APIs for XML,也即XML简单应用程序接口.与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式.当使用S ...

  4. 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

    众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...

  5. 浅谈用java解析xml文档(二)

    上一文中总结了dom解析xml文档的方式,本文开始总结使用SAX解析xml 的方式及它的优缺点! SAX(Simple API for XML),是指一种接口,或者一个软件包. 首先我们应该知道SAX ...

  6. 四种生成和解析XML文档的方法详解

    众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...

  7. Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术

    一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...

  8. 大杂烩 -- 四种生成和解析XML文档的方法详解

    基础大杂烩 -- 目录 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J DOM:在现在的Java JDK里都自带了,在xml-apis.jar包 ...

  9. 使用dom4j解析XML文档

    dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...

随机推荐

  1. Laravel API Tutorial: How to Build and Test a RESTful API

    With the rise of mobile development and JavaScript frameworks, using a RESTful API is the best optio ...

  2. Spring-boot集成RabbitMQ踩过的坑

    1.java.net.SocketException: socket closed 官方文档已经说明,新建user和guest的账户是没有远程登录的权限的 需要对登录所用账户授权 解决方法: rabb ...

  3. DOM生成XML文件

    /** * 从数据库读取学生信息的数据集合,然后Dom创建数据树,再转成XML格式数据,输出生成xml文件 * @author pikaqiu * */ public class TestGenXml ...

  4. java36

    1.Main public static void main(String [ ] args) public:被jvm调用的方法,权限要足够大 static:被jvm调用的方法,不需要创建对象,直接用 ...

  5. mui框架下拉刷新和上拉刷新

    当初写的时候,是用的谷歌浏览器测试的,都可以正常刷新,下载到手机上面,在ios是可以刷新的,在安卓上面就刷新不了,就是拉不动,后来慢慢排除不是HTML的原因,是上下拉代码有问题,刚开始看的时候也没问题 ...

  6. KVM 虚拟机的热迁移

    热迁移:顾名思义在虚拟机不关机的情况下将KVM虚拟机进行迁移 准备工作:两台KVM虚拟机,一台nfs虚拟机,centos7.4系统 主机 IP地址 主机名 KVM01 10.00.11 kvm01 K ...

  7. CentOS7 + Django2.1 + uwsgi + nginx配置

    假设已经可以运行Django项目,可以runserver.也已经安装了uwsgi和nginx 现在需要进行配置. 刚开始进行uwsgi测试就不行,提示bash:'uwsgi' Command not ...

  8. mysql 模糊查询条件带‘%’问题

  9. javaean(web作业)

    javabean简介: javabean是java语言开发的可重用组件,在jsp中使用javabean可以减少代码的重复量,使代码简洁. 他的优点: 1.可将HTML和Java代码分离,这主要是为了日 ...

  10. 学习python一个月盘点

    1,看了30多个视频,是一些基本操作的.粗略的了解了语法,函数,循环,正则表达,将视频内容全部敲入文本: 2,看了100页的书,习题不太会,进展很慢.第五章10以后的题都没做: 3,看C++的书,有点 ...