[XML学习笔记][3.1]通过JAXP使用SAX

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

在前面的笔记中,我们曾经提到读取XML数据的两种截然不同的方式,SAX就是其中一种。来看一段代码:

/**//*

* Created on 2005-2-24

* All rights reserved.

*

*/

package sean.home.test;

import java.io.File;

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;

/**//**

* @author Sean GAO

* <p>

* gaoyuxiang@gmail.com

* </p>

*

*/

public class Main
{

public static void main(String[] args) throws Exception
{

SAXParserFactory factory = SAXParserFactory.newInstance();

SAXParser parser = factory.newSAXParser();

DefaultHandler myHandler = new DefaultHandler()
{

public void startDocument() throws SAXException
{

System.out.println("XML document starts
");

}

public void endDocument() throws SAXException
{

System.out.println("XML document ends
");

}

public void startElement(String uri, String localName,

String qualifiedName, Attributes attributes)

throws SAXException
{

System.out.println("element " + qualifiedName + "starts
");

}

public void endElement(String uri, String localName,

String qualifiedName) throws SAXException
{

System.out.println("element " + qualifiedName + "ends
");

}

public void characters(char[] ch, int start, int length)
{

System.out.println(new String(ch, start, length));

}

};

parser.parse(new File(args[0]), myHandler);

}

}

在这段代码中,我们通过SAXParserFactory获取一个parser,然后自定义一个Handler去处理由SAX读取XML文件时触发的事件,如startDocument表示文档开始,endElement表示元素读取结束,characters表示在元素体内读到内容等等。这里我为了方便直接写成匿名内部类了,Exception也没有做任何处理,这在实际中通常是不合理的。

基本上SAX的实现和使用都很直截了当,就是处理一个个事件罢了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有