XML的四种解析方式之SAX
来源:互联网 发布:surface laptop 知乎 编辑:程序博客网 时间:2024/06/08 05:23
SAX(Simple APIs for XML,操作XML的简单接口),与DOM操作不同的是,SAX采用的是一种顺序的模式进行访问,是一种快速读取XML数据的方式。当使用SAX解析器进行操作的时候会触发一系列的事件,如下表所示,当扫描到文档(document)开始与结束、元素(element)开始与结束时都会调用相关的处理方法,并由这些操作方法作出相应的操作,直至整个文档扫描结束。
如果想要实现这种SAX解析,则肯定要首先建立一个SAX的解析器,一个类只要继承了DefaultHandler类即可实现。
一个简单的XML解析器的代码如下所示:
package org.skewrain.xml.sax;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class MySAX extends DefaultHandler{
public void startDocument()
throws SAXException{
System.out.println("<?xml version=\"1.0\" encoding=\"GBK\">");
}
public void startElement(String uri,
String localName,
String qName;
Attributes attributes)
throws SAXException{
System.out.print("<");
System.out.print(qName);
System.out.print(">");
}
public void endElement(String uri,
String localName;
String qName)
throws SAXException{
System.out.print("<");
System.out.print("<");
System.out.print(qName);
System.out.print(">");
}
public void characters(char[] ch,
int start,
int length)
throws SAXException{
System.out.print(new String(ch,start,length));
}
public void endDocument()
throws SAXException{
System.out.println("文档结束。。。");
}
}
使用该解析器解析sax_01.xml。
Sax_01.xml的代码如下所示:
<?xml version="1.0" encoding="GBK" standalone="no"?>
<addresslist>
<linkman id="skewrain">
<name>斜雨</name>
<email>skewrain@foxmail.com</email>
</linkman>
<linkman id="northwind">
<name>skewrain</name>
<email>skewrain@foxmail.com</email>
</linkman>
</addresslist>
使用程序TestSAX.java引用该解析器解析sax_01.xml的代码如下所示:
package org.skewrain.xml.sax;
import java.io.*;
import javax.xml.parsers.*;
public class TestSAX {
public static void main(String args[]) throws Exception {
//建立SAX解析工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse("d:" + File.separator + "sax_01.xml",new MySAX());
}
}
执行该段程序的结果如下所示:
在MySAX.java中加入如下属性解析的语句:
public void startElement(String uri,
String localName,
String qName,
Attributes attributes)
throws SAXException{
System.out.print("<");
System.out.print(qName);
if(attributes != null){
for(int x=0;x<attributes.getLength();x++){
System.out.print(" " + attributes.getQName(x) + "=\"" + attributes.getValue(x) + "\"");
}
}
System.out.print(">");
}
再次编译执行的结果如下所示:
SAX解析与DOM解析的区别:
SAX解析适合于文件的读取,但是不适合于文件的修改。DOM解析适合于文件的修改,不适合于文件的读取,二者各有优点,不能互相取代。
- XML的四种解析方式之SAX
- Java解析XML文件的四种方式之SAX解析
- 解析xml的四种方式:DOM JDOM DOM4J SAX
- java解析xml四种方式(2)-SAX方式
- android 解析xml的三种方式(DOM,SAX,PULL)之SAX(转载收藏)
- [Android]四种方式解析字符串----JSON、SAX、DOM、XML
- [Android]四种方式解析字符串----JSON、SAX、DOM、XML
- [Android]四种方式解析字符串----JSON、SAX、DOM、XML
- [Android]四种方式解析字符串----JSON、SAX、DOM、XML
- DOM,SAX,JDOM,DOM4J 四种方式解析xml
- DOM,SAX,JDOM,DOM4J 四种方式解析xml
- DRP项目(七)----XML的四种解析器之SAX解析XML
- Sax的Xml解析方式
- XML的解析 SAX方式
- android解析xml文件的方式之SAX方式
- xml生成、解析的四种方式,dom、sax、dom4j、jdom
- java 解析xml的四种方式:sax,dom,dom4j,jdom
- Dom、Sax、JDOM和Dom4j四种方式解析XML文件小Demo和四种方式的大概比较
- 获取scrollTop兼容各浏览器的方法
- [Python] Commands in Django
- winHttp库使用过程中总结的若干小问题
- hdu 1249 三角形 组合数学
- ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的
- XML的四种解析方式之SAX
- asp.net mvc Tree类别递归
- package android.hardware.fm does not exist
- Linux内核后门
- BatteryService学习笔记
- iOS中英文混排,获取字符串长度(中文字符数)
- 黑马程序员-面向对象04
- 用Python建立最简单的web服务器
- android开发之绝对安全(二) NDK开发