原理:对文档进行顺序扫描,当扫描到文档(document)开始与结束,元素开始与结束、文档结束等地方

通知事件处理函数,由事件处理函数相应动作然后继续同样的扫描,直至文档结束。

优点:消耗资源比较少;适合大文件解析;

缺点:只能读取不能修改;开发复杂。

实例:

  xml

  

<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name id="001" xx="haha">张三</name>
<sex>男</sex>
<age>20</age>
</student>
<student>
<name id="002" xx="哈哈">李四</name>
<sex>女</sex>
<age>18</age>
</student>
</students>

//

package com.java1234.xml;

import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class sax01 extends DefaultHandler{

@Override
public void characters(char[] ch, int start, int length) throws SAXException {
System.out.println("扫描节点开始"+new String(ch,start,length));
}

@Override
public void endDocument() throws SAXException {
System.out.println("扫描文档结束");
}

@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println("扫描元素结束" + qName);
}

@Override
public void startDocument() throws SAXException {
System.out.println("扫描文档开始");
}

@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println("扫描元素开始"+qName);
if(attributes!=null){
for(int i=0;i<attributes.getLength();i++){
System.out.println(attributes.getQName(i)+":"+attributes.getValue(i));
}
}
}

public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
SAXParserFactory factory =SAXParserFactory.newInstance();
SAXParser parser= factory.newSAXParser();
parser.parse("src/NewFile.xml",new sax01());

}

}

sax方式解析XML学习笔记的更多相关文章

  1. Android网络之数据解析----SAX方式解析XML数据

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  2. (四)SAX方式解析XML数据

    SAX方式解析XML数据 ​文章来源:http://www.cnblogs.com/smyhvae/p/4044170.html 一.XML和Json数据的引入: 通常情况下,每个需要访问网络的应用程 ...

  3. 网络相关系列之四:数据解析之SAX方式解析XML数据

    一.XML和Json数据的引入: 通常情况下.每一个须要訪问网络的应用程序都会有一个自己的server.我们能够向server提交数据,也能够从server获取数据.只是这个时候就有一个问题,这些数据 ...

  4. Java&Xml教程(五)使用SAX方式解析XML文件

    Java SAX解析机制为我们提供了一系列的API来处理XML文件,SAX解析和DOM解析方式不太一样,它并不是將XML文件内容一次性全部加载,而是连续的部分加载. javax.xml.parsers ...

  5. 用JAXP的SAX方式解析XML文件

    简单用JAXP的SAX方式(事件驱动)解析XML文件: 文件(1.XML) <?xml version="1.0" encoding="UTF-8" st ...

  6. Java眼中的XML--文件读取--2 应用SAX方式解析XML

    1.获取一个SAXParserFactory的实例.2.通过factory获取SAXParser实例.  3.新建一个包和继承自DefaultHandler的类.  因为SAX遍历方式,比如便利一个节 ...

  7. DOM解析xml学习笔记

    一.dom解析xml的优缺点 由于DOM的解析方式是将整个xml文件加载到内存中,转化为DOM树,因此程序可以访问DOM树的任何数据. 优点:灵活性强,速度快. 缺点:如果xml文件比较大比较复杂会占 ...

  8. SAX方式解析XML文件实例

    books.XML文件: 书籍book.java实体类: public class Book { private String id; private String name; private Str ...

  9. SAX方式解析XML

    sax解析分为以下几步: 1 获取一个saxparserfactory 2 获取一个解析器 3 创建handler对象,这个myHandler是继承了DefaultHandler的一个类,这个实现类里 ...

随机推荐

  1. Git - git push origin master 报错的解决方法

    亲测实用,转载保存,原文地址:https://blog.csdn.net/kangvcar/article/details/72773904 错误提示如下: [root@linux1 php]# gi ...

  2. Part 19 AngularJS Services

    What is a service in AngularJSBefore we talk about what a service is in Angular. Let's talk about a ...

  3. Part 1 to 10 Basic in C#

    Part 1 Introduction The struct of C# program: namespace , class and Main method what is namespace? t ...

  4. Java学习(八)

    今天学了类的封装知识与编译器的使用,和c++的大体一致,只有一些细节不同,像private的使用等. 小试牛刀,写了一个封装后的类,并且测试. public class Student { priva ...

  5. Mac Python相关配置操作汇总

    以下总结一下我在安装pytorch时用到的一些命令及操作,方便以后回顾 一.Which xxxx 直接查找到xxxx所在的路径.如下: which python python: aliased to ...

  6. 问题 N: 非洲小孩

    题目描述 家住非洲的小孩,都很黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不经常洗澡.(常年缺水,怎么洗澡.) 现在,在一个非洲部落里,他们只有一个地方洗澡,并且,洗澡时间很短,瞬间 ...

  7. Windows漏洞:MS08-067远程代码执行漏洞复现及深度防御

    摘要:详细讲解MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程 本文分享自华为云社区<Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御>,作者 ...

  8. SQLServer创建约束

    --创建数据库create database studentson primary(    name=stu_data,    filename='f:\SQL\stu_data.mdf',    s ...

  9. [gym102900H]Rice Arrangement

    (可以先阅读题目中关于顺逆时针的定义,避免理解错误) 考虑一盘菜$b_{i}$被$a_{j}$吃掉,对于其最后一次移动:如果是顺时针,则称$b_{i}$的移动区间为$[a_{j},b_{i}]$(若$ ...

  10. C/C++ Qt ListWidget 列表框组件应用

    ListWidget列表框组件,该组件与TreeWidget有些相似,区别在于TreeWidget可以实现嵌套以及多字段结构,而ListWidget组件则只能实现单字段结构,ListWidget组件常 ...