1.新建一个SAXTest类,继承import org.xml.sax.helpers.DefaultHandler类

 package com.qiao.SrpingSource;

 import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler; public class SAXTest extends DefaultHandler { private String currentTag ; /**
* 开始读取文档,通常做一些初始化工作
*/
@Override
public void startDocument() throws SAXException {
System.out.println("----start document ---");
} /**
* 开始读取节点
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException { System.out.println(qName+" --");
currentTag=qName;
if (qName.equals("name")) {
//读取属性中的值
if (attributes != null) {
for (int i = 0; i < attributes.getLength(); i++) {
System.out.println(" sss "+attributes.getQName(i)+ " " + attributes.getValue(i));
}
}
} } /**
* 读取节点中的文本文档
*/
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
//当当前结点名称为name时,获取其节点中的内容
if(currentTag.equals("name")){
String content = new String(ch,start,length);
System.out.println(content); } } /**
* 读取节点结束时
*/
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
} /**
* 读取文档介绍时
*/
@Override
public void endDocument() throws SAXException { System.out.println(">> endDocument <<"); }
}

2.xml文件为

  

 <?xml version="1.0" encoding="UTF-8"?>
<class>
<stu id="001">
<name>Allen</name>
<sex>男</sex>
<age>20</age>
</stu>
<stu id="002">
<name>namy</name>
<sex>女</sex>
<age>18</age>
</stu>
<stu id="003">
<name>lufy</name>
<sex>男</sex>
<age>18</age>
</stu>
</class>

3.调用方法

  

     @Test
public void test() throws ParserConfigurationException, SAXException{ SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser(); SAXTest handler = new SAXTest(); try {
parser.parse(new File("D:/eclipse/workspace/SpringSource/src/main/resource/test.xml"), handler); } catch (IOException e) {
e.printStackTrace();
} }

4.运行结果

----start document ---
class --
stu --
name --
Allen             //读取到的name节点的值

sex --
age --
stu --
name --
namy    //读取到的name节点的值

sex --
age --
stu --
name --
lufy    //读取到的name节点的值

sex --
age --
>> endDocument <<

简单的java使用SAX解析xml的更多相关文章

  1. Java用SAX解析XML

    要解析的XML文件:myClass.xml <?xml version="1.0" encoding="utf-8"?> <class> ...

  2. JAVA使用SAX解析XML文件

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

  3. java使用sax解析xml

    目的:解析xml文件,并存入mysql,并且要解析的字段能一一对应.这里解析的是微博的文件,想要利用里面的article和person_id字段. 思路: 为了能得到person_id和article ...

  4. Java中Sax解析XML

    SAX基于事件的解析,解析器在一次读取XML文件中根据读取的数据产生相应的事件,由应用程序实现相应的事件处理逻辑,即它是一种“推”的解析方式:这种解析方法速度快.占用内存少,但是它需要应用程序自己处理 ...

  5. java 使用SAX解析xml 文件

    http://www.cnblogs.com/allenzheng/archive/2012/12/01/2797196.html 为了学习方便,忘博主勿究

  6. SAX解析XML笔记

    关于基本操作,请参考:Java用SAX解析XML,这里不重复造轮子了,以下是个人笔记:

  7. 用SAX解析xml文件,java

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

  8. DOM&SAX解析XML

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

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

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

随机推荐

  1. 使用 WebClient 來存取 GET,POST,PUT,DELETE,PATCH 網路資源

    WebClient 基本資訊 提供通用方法使用 WebRequest 類別傳送及接收 URI (支援 http:, https:, ftp:,和 file: ) 的資源 Namespace:Syste ...

  2. [转] watch 命令使用(linux监控状态)

    [From] https://jingyan.baidu.com/article/495ba841c5a31738b30eded4.html 可以使用watch 命令设置执行间隔,去反复间隔一条命令或 ...

  3. my.工坊_ZZ

    1.查了下,可以将 考古升上去,但是 还是使用 2级的考古技能,这样比较赚,高级的反而不赚.但是看到有人说 考古升到 3/4 不能再用 洛阳铲 了. 于是有了两种情况,我暂定的做法:先将 考古升到2级 ...

  4. java多线程-线程间协作

    大纲: wait.notify.notifyAll Condition 生产消费者 一.wait.notify.notifyAll wait.notify.notifyAll是Object的本地fin ...

  5. ant.design初探

    第一部分: 前言 推荐网站: https://ant.design/docs/spec/introduce-cn ant.design是基于react开发的一个解放ui和前端的工具,它提供了一致的设计 ...

  6. jQuery validate 设置失去焦点就校验和失去焦点就表单校验是否通过

    js部分 html部分 自定义样式: /*自定义validate覆盖掉了 validate 里面默认的显示样式*/ label.error{ background:url(${pageContext. ...

  7. orcale 之数据操作

    SQL 语句的数据操作功能是通过数据操作语言实现的,用于改变数据库中的数据.数据更新包括插入.删除和修改三种操作,与之对应的就是 INSERT. UPDATE 和 DELETE. 数据准备 创建两张表 ...

  8. cg教程

    Unity对shader的重点支持是cg语言,因为具有跨平台性质 Cg语言和CPU 上的C语言是很相似的,只不过有了自己的一套关键字和函数库 Cg语言的权威和入门教程在NVID1A的官方网站上,如果以 ...

  9. Python读取文件编码及内容

    Python读取文件编码及内容 最近做一个项目,需要读取文件内容,但是文件的编码方式有可能都不一样.有的使用GBK,有的使用UTF8.所以在不正确读取的时候会出现如下错误: UnicodeDecode ...

  10. Java虚拟机知识 总结 记录

    总结了自己这两天掌握的一些JVM相关的知识.方便自己复习. jvm全称是Java Virtual Machine(java虚拟机).它之所以被称之为是“虚拟”的,就是因为它仅仅是由一个规范来定义的抽象 ...