搜索 | 会员  
Java的XML编程
来源: 博客园    作者:网友  日期:2009-9-1  类别:其它语言  主题:Python  编辑:德仔
SAX API 的说明书通俗易读。它包含了很多的详细内容。而使用SAX API的主要任务就是创建一个实现ContentHandler接口,一个供XML 解析器调用以将分析X
SAX API 的说明书通俗易读。它包含了很多的详细内容。而使用SAX API的主要任务就是创建一个实现ContentHandler接口,一个供XML 解析器调用以将分析XML文档时所发生的SAX事件分发给处理程序的回调接口。

  方便起见,SAX API也提供了一个已经实现了ContentHandler接口的DefaultHandler适配器类。

  一但实现了ContentHandler或者扩展了DefaultHandler类,你只需直接将XML解析器解析一个特定的文档即可。

  我们的第一个例子扩展DefaultHandler将每个SAX事件打印到控制台。这将给你一个初步的映象,以说明什么SAX事件将会发生及以怎样的顺序发生。

  作为开始,以下是将在我们的第一个示例中用到的XML文档样本:

  代码:

  package xmltest;
  import javax.xml.parsers.*;
  import org.xml.sax.*;
  import org.xml.sax.helpers.*;
  import java.io.*;
  public class SaxTest extends DefaultHandler {
  // 重载DefaultHandler类的方法
  // 以拦截SAX事件通知。
  //
  // 关于所有有效事件,见org.xml.sax.ContentHandler
  //
  public void startDocument( ) throws SAXException {
  System.out.println( "SAX Event: START DOCUMENT" );
  }
  public void endDocument( ) throws SAXException {
  System.out.println( "SAX Event: END DOCUMENT" );
  }
  public void startElement( String namespaceURI,
  String localName,
  String qName,
  Attributes attr ) throws SAXException {
  System.out.println( "SAX Event: START ELEMENT[ " +
  localName + " ]" );
  // 如果有属性,我们也一并打印出来...
  for ( int i = 0; i < attr.getLength(); i++ ){
  System.out.println( " ATTRIBUTE: " +
  attr.getLocalName(i) +
  " VALUE: " +
  attr.getValue(i) );
  }
  }
  public void endElement( String namespaceURI,
  String localName,
  String qName ) throws SAXException {
  System.out.println( "SAX Event: END ELEMENT[ " +
  localName + " ]" );
  }
  public void characters( char[] ch, int start, int length )
  throws SAXException {
  System.out.print( "SAX Event: CHARACTERS[ " );
  try {
  OutputStreamWriter outw = new OutputStreamWriter(System.out);
  outw.write( ch, start,length );
  outw.flush();
  } catch (Exception e) {
  e.printStackTrace();
  }
  System.out.println( " )" );
  }
  public static void main( String[] argv ){
  System.out.println( "Example1 SAX Events:" );
  try {
  // SAXParserFactory spFactory = SAXParserFactory.newInstance();
  // SAXParser sParser = spFactory.newSAXParser();
  // 建立SAX 2解析器...
  XMLReader xr = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
  // 安装ContentHandler...
  xr.setContentHandler( new SaxTest() );
  // 解析文件...
  xr.parse( new InputSource(
  new FileReader( "exampleA.xml" )) );
  }catch ( Exception e ) {
  e.printStackTrace();
  }
  }
  }
德仔网尊重行业规范,每篇文章都注明有明确的作者和来源;德仔网的原创文章,请转载时务必注明文章作者和来源:德仔网;
头条那些事
大家在关注
广告那些事
我们的推荐
也许感兴趣的
干货
了解一下吧