简单的java使用SAX解析xml
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的更多相关文章
- Java用SAX解析XML
要解析的XML文件:myClass.xml <?xml version="1.0" encoding="utf-8"?> <class> ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- java使用sax解析xml
目的:解析xml文件,并存入mysql,并且要解析的字段能一一对应.这里解析的是微博的文件,想要利用里面的article和person_id字段. 思路: 为了能得到person_id和article ...
- Java中Sax解析XML
SAX基于事件的解析,解析器在一次读取XML文件中根据读取的数据产生相应的事件,由应用程序实现相应的事件处理逻辑,即它是一种“推”的解析方式:这种解析方法速度快.占用内存少,但是它需要应用程序自己处理 ...
- java 使用SAX解析xml 文件
http://www.cnblogs.com/allenzheng/archive/2012/12/01/2797196.html 为了学习方便,忘博主勿究
- SAX解析XML笔记
关于基本操作,请参考:Java用SAX解析XML,这里不重复造轮子了,以下是个人笔记:
- 用SAX解析xml文件,java
(此文为(https://www.imooc.com/video/4482)之随笔) 1.用SAX解析xml文件大致分为三步 写了一个XML文件作为例子 (1)main方法代码如下: import j ...
- DOM&SAX解析XML
在上一篇随笔中分析了xml以及它的两种验证方式.我们有了xml,但是里面的内容要怎么才能得到呢?如果得不到的话,那么还是没用的,解析xml的方式主要有DOM跟SAX,其中DOM是W3C官方的解析方式, ...
- Python:使用基于事件驱动的SAX解析XML
SAX的特点: 是基于事件的 API 在一个比 DOM 低的级别上操作 为您提供比 DOM 更多的控制 几乎总是比 DOM 更有效率 但不幸的是,需要比 DOM 更多的工作 基于对象和基于事件的接口 ...
随机推荐
- 5104 I-country
5104 I-country 在 N*M 的矩阵中,每个格子有一个权值,要求寻找一个包含 K 个格子的凸连通块(连通块中间没有空缺,并且轮廓是凸的,如书中图片所示),使这个连通块中的格子的权值和最大. ...
- Linux一些常用的基础命令,总结的很好,收藏了
原文地址:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html
- Kettle 行列互换之——行转列(多列数据合并成一列变为多行)
原始需求如下: 业务系统设置成这样,见截图. 工资项目为了方便录入,都是做成列的. 但是这些数据需要和另外的费用报销系统的数据关联,费用报销系统的费用项目是横向的,用费用项目.金额的多行来表达.那么这 ...
- 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest
题目传送门 只打了三个小时. A. Broadcast Stations B. Connect3 补题:zz 题解:因为格子是4*4的,而且每次落子的位置最多是只有四个,再加上剪枝,情况不会很多,直接 ...
- JVM 统计监测命令
参考 深入理解JVM(七)——性能监控工具 JVM性能调优监控工具专题一 JVM调优总结 + jstat 分析 1. 进入 jdk 目录 cd /usr/local/jdk/bin 2. 查询所有 j ...
- php7 中?? 和 ?:的区别
$b = $a?? $c ;相当于$b= isset($a)?$a:$c; $b = $a?: $c ;则是 $b = !empty($a) ? $a:$c;
- vue-cli项目启动遇到的坑
利用 npm init webpack projectname 之后 切换到项目所在文件夹下,执行命令 npm install ,一直非常慢,卡在那里基本不动. 最后是利用cnpm 安装成功的. 转载 ...
- ImportError: libSM.so.6: cannot open shared object file: No such file or directory
Solution sudo apt-get install libsm6 Similarly ImportError: libXrender.so.1: cannot open shared obje ...
- layui 时间插件laydate ,取消回调
背景:转型新公司不再是做前端展示H5之类的东西,主要业务是后台数据读取和插件搭建前端页面,接触的第一个老项目是layui制作的,由于业务需求,需要用到时间插件以下为时间插件的一些用法--------- ...
- debian sudo
apt-get install sudo vi /etc/sudoers add CentOS 7 root ALL=(ALL) ALL Debian root ALL=(ALL:ALL) ALL 按 ...