技术中心

这里象征着我们的态度和能力

>深入浅出:讨论Java的XML编程
作者:中国IT实验室    来源:中国IT实验室    发布时间:2012-01-28      浏览次数:6113
分享到:
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  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();

  }

  }

  }

4000-880-989
(24小时热线)
联系客服
微信公众号

官方公众号

小程序

©2008-2022 CORPORATION ALL Rights Reserved. 昆明奥远科技有限公司版权所有 滇ICP备09003328号-1 滇公网安备 53011102000818号 增值电信业务经营许可证号:滇B2-20110045
昆明那家网络公司好,新媒体运营,网站优化,网络推广,网站建设,网页设计,网站设计,网站推广,云南网站公司,昆明新媒体公司,云南网红主播,昆明SEO公司,昆明网站建设,昆明网络推广,昆明网站优化,昆明网站推广,红河网站建设,大理网络公司,曲靖网络公司,丽江网站设计,昭通网络公司,保山大数据服务,智慧高速建设,智慧校园服务,云南IDC服务商,网络安全测评,等保测评,网站关键词排名优化服务,服务客户尽超2000余家,一切尽在奥远科技,服务电话:13888956730