1.要解析的xml

<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee id="001">
<name>cici</name>
<department>finace</department>
<supervisor>lily</supervisor>
</employee>
<employee id="002">
<name>alex</name>
<department>develope</department>
<supervisor>lily</supervisor>
</employee>
</employees>

2.继承DefaultHandler的子类EmployeeHandler.java,重写方法

package sax;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import java.util.Map; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory; public class SaxXMLTest {
public static void main(String[] args) throws SAXException, ParserConfigurationException, IOException{
readXMLBySaxParser();
readXMLByXMLReader();
} private static void readXMLBySaxParser() throws ParserConfigurationException,
SAXException, IOException {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser(); EmployeeHandler handler = new EmployeeHandler("employee");
parser.parse("src\\sax\\employees.xml", handler);
List<Map<String, String>> employees = handler.getEmployees();
System.out.println(employees.toString());
} private static void readXMLByXMLReader() throws SAXException,
SAXNotRecognizedException, SAXNotSupportedException, FileNotFoundException, IOException {
XMLReader reader = XMLReaderFactory.createXMLReader();
//打开解析器验证的功能
reader.setFeature("http://xml.org/sax/features/validation",true);
//开启明明空间特性
reader.setFeature("http://xml.org/sax/features/namespaces",true);
EmployeeHandler handler = new EmployeeHandler("employee");
reader.setContentHandler(handler);
reader.parse(new InputSource(new BufferedInputStream(new FileInputStream("src\\sax\\employees.xml"))));
}
}

3.测试类 SaxXMLTest.java,用SAXParser和XMLReader两种方式解析

package sax;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import java.util.Map; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory; public class SaxXMLTest {
public static void main(String[] args) throws SAXException, ParserConfigurationException, IOException{
readXMLByHandler();
readXMLByXMLReader();
} private static void readXMLByHandler() throws ParserConfigurationException,
SAXException, IOException {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser(); EmployeeHandler handler = new EmployeeHandler("employee");
parser.parse("src\\sax\\employees.xml", handler);
List<Map<String, String>> employees = handler.getEmployees();
System.out.println(employees.toString());
} private static void readXMLByXMLReader() throws SAXException,
SAXNotRecognizedException, SAXNotSupportedException, FileNotFoundException, IOException {
XMLReader reader = XMLReaderFactory.createXMLReader();
//打开解析器验证的功能
reader.setFeature("http://xml.org/sax/features/validation",true);
//开启明明空间特性
reader.setFeature("http://xml.org/sax/features/namespaces",true);
EmployeeHandler handler = new EmployeeHandler("employee");
reader.setContentHandler(handler);
reader.parse(new InputSource(new BufferedInputStream(new FileInputStream("src\\sax\\employees.xml"))));
}
}

SAX解析XML-例子的更多相关文章

  1. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  2. DOM&SAX解析XML

    在上一篇随笔中分析了xml以及它的两种验证方式.我们有了xml,但是里面的内容要怎么才能得到呢?如果得不到的话,那么还是没用的,解析xml的方式主要有DOM跟SAX,其中DOM是W3C官方的解析方式, ...

  3. 用SAX解析xml文件,java

    (此文为(https://www.imooc.com/video/4482)之随笔) 1.用SAX解析xml文件大致分为三步 写了一个XML文件作为例子 (1)main方法代码如下: import j ...

  4. Android之SAX解析XML

    一.SAX解析方法介绍 SAX(Simple API for XML)是一个解析速度快并且占用内存少的XML解析器,非常适合用于Android等移动设备. SAX解析器是一种基于事件的解析器,事件驱动 ...

  5. Android 使用pull,sax解析xml

    pull解析xml文件 1.获得XmlpullParser类的引用 这里有两种方法 //解析器工厂 XmlPullParserFactory factory=XmlPullParserFactory. ...

  6. cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)

    今天是个好日子.我以为事情可以变得,明天是个好日子.打开门儿春风... 恩,听着歌写文档生活就是这么享受. 今天曾经的邻居大神突然在qq上赞了我一下,这让我异常激动啊.. 这还要从前前前几天说起,那会 ...

  7. SAX解析xml浅析

    SAX解析XML文件采用事件驱动的方式进行,也就是说,SAX是逐行扫描文件,遇到符合条件的设定条件后就会触发特定的事件,回调你写好的事件处理程序.使用SAX的优势在于其解析速度较快,占用内存较少(相对 ...

  8. JavaWeb学习日记----SAX解析XML

    1.SAX解析XML文档的方式: 与DOM方式解析不同,DOM方式解析是根据XML的层级结构在内存中分配一个树形结构,把xml的标签,属性和文本都封装成对象.优点是可以很方便实现增删改操作.缺点是,如 ...

  9. Python:使用基于事件驱动的SAX解析XML

    SAX的特点: 是基于事件的 API 在一个比 DOM 低的级别上操作 为您提供比 DOM 更多的控制 几乎总是比 DOM 更有效率 但不幸的是,需要比 DOM 更多的工作 基于对象和基于事件的接口 ...

  10. Android SAX解析XML

    本篇讲解一下SAX解析XML这种方式,首先来看一下它的基本介绍: SAX是一种以事件驱动的XML API,由它定义的事件流可以指定从解析器传到专门的处理程序的代码的XML结构,简单的讲,它是种解析速度 ...

随机推荐

  1. python 高阶函数二 map()和reduce()

    一.map()函数 map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. >>> fro ...

  2. P3171 [CQOI2015]网络吞吐量

    传送门 首先跑一遍最短路,如果一条边满足\(dis[v]=dis[u]+w[i]\),那么这条边就在最短路中,把它加进网络流的图里 然后点的流量限制的话拆点,把每个点拆成两个,中间连边来限制流量 最后 ...

  3. Tech 助力Fin ,大数据风控系统赋能掌众金服!

    胡亚海 首席技术官  CTO 北京航空航天大学  博士 深耕互联网领域近20年,先后任职于普天信息技术研究院.摩托罗拉.宇龙酷派.百度等知名企业,曾主导宇龙酷派公司全员从WinCE向Android转型 ...

  4. Windows7运行无法记录历史命令问题解决

    Windows7运行无法记录历史命令,每次都需要手动敲命令,解决方法如下: 1.任务栏中右键,选择"属性"菜单: 2.在弹出框中的"[开始]菜单"选项卡的隐私区 ...

  5. Android 插件技术:动态加载dex技术初探

    1.Android动态加载dex技术初探 http://blog.csdn.net/u013478336/article/details/50734108 Android使用Dalvik虚拟机加载可执 ...

  6. vue watch监听对象及对应值的变化

    data:{ a:1, b:{ value:1, type:1, } }, watch:{ a(val, oldVal){//普通的watch监听 console.log("a: " ...

  7. PHP使用Session遇到的一个Permission denied Notice解决办法

    搜索 session.save_path 在这里你有两个选择,一个是像我一样用; 把这一行注释掉,另一个选择就是修改一个 nobody 用户可以操作的目录,也就是说有读写权限的目录,我也查了下这个默认 ...

  8. 关于OPPO手机的生存和程序员的发展

    关于程序员私下讨论最多的话题,除了哪个编程最牛逼之外,哪款品牌的手机最牛逼也是我们谈论最多的话题之一吧!有的喜欢罗永浩,自然就是锤粉:有的喜欢苹果,称它为工业时代最优美的艺术品:当然,我想也有很多的人 ...

  9. 最新版Kubernetes常用命令大全

    #查看所有namespace的pods运行情况 kubectl get pods --all-namespaces #查看具体pods,记得后边跟namespace名字哦 kubectl get po ...

  10. Java语法基础-序列化

    33. Java序列化中如果有些字段不想进行序列化,怎么办? 答:对于不想进行序列化的变量,使用transient关键字修饰. transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序 ...