requesthandler.java

来自「weblogic应用全实例」· Java 代码 · 共 98 行

JAVA
98
字号
package examples.xml.http;

import java.util.*;
import java.net.*;
import org.xml.sax.*;
import java.io.*;
import org.xml.sax.helpers.ParserFactory;
import javax.servlet.http.*;

/**
 * 这个类继承了 HandlerBase 用来处理XML文档解析时产生的事件
 * 解析文档后,getData() 方法可以用来获取代表XML数据的Hashtable。
 *
 * @author Copyright (c) 2000 by BEA Systems, Inc. All Rights Reserved.  
 */

public class RequestHandler extends HandlerBase {

  /** 股票交易文档模型 */
  private Hashtable trade;

  /** 缺省构造器 */
  public RequestHandler() {}

  //
  // 文档处理方法
  //

  /** 文档开始 */
  public void startDocument() throws SAXException {
    trade = new Hashtable();
  } 

  /** 元素开始 */
  public void startElement(String name, AttributeList attrs) throws SAXException {
      if (attrs != null) {
          int len = attrs.getLength();

          // 增加属性值
          for (int i = 0; i < len; i++) {
            trade.put(attrs.getName(i), attrs.getValue(i));
          }
      }
  } 


  //
  // 错误处理方法
  //

  /** 警告 */
  public void warning(SAXParseException ex) {
      System.err.println("[Warning] "+
                         getLocationString(ex)+": "+
                         ex.getMessage());
  }

  /** 错误 */
  public void error(SAXParseException ex) {
      System.err.println("[Error] "+
                         getLocationString(ex)+": "+
                         ex.getMessage());
  }

  /** 严重错误 */
  public void fatalError(SAXParseException ex) throws SAXException {
      System.err.println("[Fatal Error] "+
                         getLocationString(ex)+": "+
                         ex.getMessage());
      throw ex;
  }

  private String getLocationString(SAXParseException ex) {
      StringBuffer str = new StringBuffer();

      String systemId = ex.getSystemId();
      if (systemId != null) {
          int index = systemId.lastIndexOf('/');
          if (index != -1) 
              systemId = systemId.substring(index + 1);
          str.append(systemId);
      }
      str.append(':');
      str.append(ex.getLineNumber());
      str.append(':');
      str.append(ex.getColumnNumber());

      return str.toString();

  } 

  /** 返回解析的数据,以 hashtable 的形式 */
  public Hashtable getData() {
    return trade;
  }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?