测试的xml数据:

<?xml version="1.0" encoding="utf-8" ?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

新建SaxTest类继承至DefaultHandle

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import java.io.FileInputStream;
import java.io.IOException; public class SaxTest extends DefaultHandler {
@Override
public void startDocument() throws SAXException {
System.out.println("开始解析文档");
} @Override
public void endDocument() throws SAXException {
System.out.println("解析文档结束");
} @Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println(qName);//每个标签开始都会触发该事件,attributes是标签的属性
} @Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println(qName);//每个标签结束都会触发该事件
} @Override
public void characters(char[] ch, int start, int length) throws SAXException {
System.out.println(new String(ch, start, length));//标签开始到标签结束之间的内容
} static public void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
String textXml = SaxTest.class.getResource("/").getPath() + "test.xml";
FileInputStream inputStream = new FileInputStream(textXml);
SAXParserFactory.newInstance().newSAXParser().parse(inputStream, new SaxTest());
}
}

解析结果截图:

aaarticlea/png;base64,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" alt="" />

其中characters方法需要特别注意,开始标签到结束标签的内容可能不止会触发一次characters事件,也就是说标签中的内容可能会多次触发characters事件,所以如果要获取标签内的完整内容需要特别小心,一般使用StringBuilder,如下代码。

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import java.io.FileInputStream;
import java.io.IOException; public class SaxTest extends DefaultHandler {
StringBuilder stringBuilder = new StringBuilder(); @Override
public void startDocument() throws SAXException {
System.out.println("开始解析文档");
} @Override
public void endDocument() throws SAXException {
System.out.println("解析文档结束");
} @Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println(qName);//每个标签开始都会触发该事件,attributes是标签的属性
} @Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println(stringBuilder.toString().trim());
stringBuilder.delete(0, stringBuilder.length());//输出内容,并清空stringBuilder System.out.println(qName);//每个标签结束都会触发该事件
} @Override
public void characters(char[] ch, int start, int length) throws SAXException {
stringBuilder.append(ch, start, length);
} static public void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
String textXml = SaxTest.class.getResource("/").getPath() + "test.xml";
FileInputStream inputStream = new FileInputStream(textXml);
SAXParserFactory.newInstance().newSAXParser().parse(inputStream, new SaxTest());
}
}

Sax解析xml文档的更多相关文章

  1. 使用SAX解析xml文档

    1.首先,在main方法中解析xml文档,具体代码如下: import org.w3c.dom.*; import javax.xml.parsers.DocumentBuilder; import ...

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

    SAX从上向下解析,一行一行解析.节省内存,不适合CRUD. XML文档: <?xml version="1.0" encoding="UTF-8"?&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. Reduction operations

    Reuction operations Reduction operations A reduction operations on a tensor is an operation that red ...

  2. Akka源码分析-Persistence Query

    Akka Persistence Query是对akka持久化的一个补充,它提供了统一的.异步的流查询接口.今天我们就来研究下这个Persistence Query. 前面我们已经分析过Akka Pe ...

  3. 题解报告:hdu1994利息计算

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1994 Problem Description 为自行解决学费,chx勤工俭学收入10000元以1年定期 ...

  4. magento 用程序生成优惠劵码

    参考自http://fragmentedthought.com/fragments/programatically-creating-sales-rule-coupon-code 上面的代码只能生成C ...

  5. VS2010下安装Opencv 分类: Opencv 2014-11-02 13:51 778人阅读 评论(0) 收藏

    Opencv作为一种跨平台计算机视觉库,在图像处理领域得到广泛的应用,下面介绍如何在VS2010中安装配置Opencv 一.下载Opencv 下载网址:http://sourceforge.net/p ...

  6. Statistics gathering and SQL Tuning Advisor

    1. https://www.pythian.com/blog/statistics-gathering-and-sql-tuning-advisor/ Our monitoring software ...

  7. MySQL-时间(time、date、datetime、timestamp和year)

    情景进入 情境进入: 今天调试某查询页面,偶尔发现一个问题,刚刚插入的数据,没有正常排序显示,经过后台调试sql,发现一个问题??? 经过上面红色对比,不知道你发现问题没,Order by 只是多一个 ...

  8. 5 Transforms 转移 笔记

    5 Transforms 转移 笔记   Transforms    Unfortunately, no one can be told what the Matrix is. You have to ...

  9. 12. binary search Trees

    12. binary search Trees    The search tree data structure supports many dynamic-set operations,inclu ...

  10. MySQL——sql注入

    https://blog.csdn.net/lin_tuer/article/details/54809330 https://github.com/mysqljs/mysql#escaping-qu ...