在XMLReader接受XML文档,并对读入的xml文件进行解析,解析开始之前,需要向XMLReader注册一个ContentHandler,也 就是相当于一个事件监听器,在ContentHandler中定义了很多方法,当XMLReader读到合适的内容,就会抛出相应的事件,并把这个事件的 处理权代理给ContentHandler,调用其相应的方法进行响应。
ContentHandler是一个接口,当处理特定的XML文件 的时候,需要为其创建实现了此接口的类来处理特定的事件。而org.xml.sax.helpers.DefaultHandler类实现了此接口,所以 我们只要继承DefaultHandler,并覆盖其中的方法即可。具体常用的几个方法在下面程序中有详细注释:
package xml;
import java.io.FileReader;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;;
public class SaxTest extends DefaultHandler{
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
XMLReader xr=XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
xr.setContentHandler(new SaxTest());
xr.parse(new InputSource(new FileReader("test.xml")));
}
//在文档开始的时候调用此方法
public void startDocument() throws SAXException {
System.out.println("startDocument: ");
}
//在文档结束的时候调用此方法
public void endDocument() throws SAXException {
System.out.println("enddocument: ");
}
//在遇到开始标签时调用此方法,
//其中参数中的namespaceURI就是名域,localName是标签名,qName是标签的修饰前缀,当没有使用名域的时候,这两个参数都未null。而atts是这个标签所包含的属性列表。通过atts,可以得到所有的属性名和相应的值
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println("startElement: "+localName);
}
//遇到结束标签时调用此方法
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println("endElement: "+localName);
}
//当遇到标签中的字符串时,调用这个方法,它的参数是一个字符数组,以及读到的这个字符串在这个数组中的起始位置和长度
public void characters(char[] ch, int start, int length) throws SAXException {
String data=new String(ch,start,length);
System.out.println(data);
}
}
当我们创建如下test.xml文件时
test.xml
-------------------
<?xml version="1.0"?>
<School>
<Student>
<ID>123456</ID>
<Address>408</Address>
<Name>wxm</Name>
<Sex>male</Sex>
</Student>
</School>
-------------------
运行程序,输出结果如下:
startDocument:
startElement: School
startElement: Student
startElement: ID
123456
endElement: ID
startElement: Address
408
endElement: Address
startElement: Name
wxm
endElement: Name
startElement: Sex
male
endElement: Sex
endElement: Student
endElement: School
enddocument:
----------------
END!
分享到:
相关推荐
压缩包里面有两个文件:SAX.java和SAXparse.java 用来解析大于100M的xml文件,SAX读取xml不同于DOM方式,DOM方式在解析xml前需要全部加载xml文件,当xml文件很大时,就会出现内存不足的问题,而SAX则是逐行读取xml...
NULL 博文链接:https://suky.iteye.com/blog/621169
Java中XML配置文件的读取(sax)
介绍了如何通过java来读写xml的方法,其中介绍了几种方法,如:DOM、SAX、JDOM、JAXB、dom4j.
java从服务器读取xml文件并以SAX方式解析附带(服务器与解析源码)
总结DOM、SAX、JDOM、DOM4J读写xml文档的多种方法。
java读取xml文件的四种方法: 第一种 DOM 实现方法 第二种 DOM4J实现方法 第三种 JDOM实现方法 第四种SAX实现方法
sax读取xml文件并反射到对应的实体中
用JAVA实现的读取,写入XML的程序,实现了SAX和DOM两种方式。
《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定...
因此,正确读写XML文档是XML应用的基础. Java提供了SAX和DOM两种方式用于解析XML,但即便如此,要读写一个稍微复杂的XML,也不是一件容易的事. 二、XMLBean简介 Hibernate已经成为目前流行的面向Java...
Java 解析XML性能分析Demo。包含了DOM解析,SAX解析, JDOM解析,DOM4J解析,JAXB解析例子。
读取XML文件的四种方法,详细介绍了dom,jdom,dom4j,sax
java读取RSS-SAX解析XML的实例,java语言编写,使用时只需要在main方法中将参数换成自己的RSS地址即可。
《Java与XML》(第三版)的内容涵盖了所有主要的Java XML处理库程序,全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定...
要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/ 解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar...
利用JSP直接读写XML文件,分别用DOM解析器和SAX解析器加以实现,非常适合初学者入门,作为一个了解jsp与XML的台阶
java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...
首先介绍下Android SDK与Java SDK在读写XML文件方面,数据包之间的关系。Android 平台最大的一个优势在于它利用了 Java 编程语言。Android SDK 并未向标准 Java Runtime Environment (JRE) 提供一切可用功能,但它...
涵盖了DOM、SAX、JDOM和DOM4J四种方式,读写xml。都给出了具体例子,都是可执行的。