给你个例子吧。package xml;
/**
解析setup.xml文件的Handler模块
@author:sharetop([email protected])
@version:1.0.1created date: 2001.4.2**/import java.util.*;
import java.io.*;import org.xml.sax.*;
import org.xml.sax.helpers.*;public class setupHandler extends HandlerBase
{
final private String ELE_PRODUCT = "ProductInfo";
final private String ELE_TYPE = "Type";
final private String ELE_NAME = "Name";
final private String EXT_ELEMENT = "Action";

private ArrayList allTypeList=null;
private ArrayList allNameList=null;
private Hashtable setting=null;

private String productFactor=null;
private String elementFactor=null;
private String typeFactor=null; private String curProductName = null;
/**
构造函数
两个参数,指定属性环境及属性类型,用于返回一个特定类型的所有属性值。
**/
public setupHandler(String product,String environment,String propertyType)
{
this.productFactor=product;
this.elementFactor=environment+EXT_ELEMENT;
this.typeFactor=propertyType;
}

/**
构造函数
一个参数,指定属性环境,用于返回本环境下的所有属性类型字串。
**/
public setupHandler(String product,String environment)
{
this.productFactor=product;
this.elementFactor=environment+EXT_ELEMENT;
this.typeFactor=null;
}

public setupHandler(String product)
{
this.productFactor=product;
this.elementFactor=null;
this.typeFactor=null;
}

public setupHandler()
{
this.productFactor=null;
this.elementFactor=null;
this.typeFactor=null;
} /**
取结果,所有类型字串的一个arraylist。

@return 所有类型字串的ArrayList。

**/
public ArrayList getTypesResult()
{
return allTypeList;
}

/**
取结果,一个特定类型的所有属性值。

@return 一个记录了所有属性值的hashtable。
**/
public Hashtable getPropertyResult()
{
return setting;
}

public ArrayList getNamesResult()
{
return allNameList;
}
  /**
  开始解析文档。
  **/
  public void startDocument() throws SAXException 
  {
    if(elementFactor!=null) allTypeList = new ArrayList();
    if(productFactor==null) allNameList = new ArrayList();
  }

/**
开始解析元素。
**/  
private void parseNamesList(AttributeList atts)
{
  if( atts != null)
  {
  for(int i=0;i<atts.getLength();i++)
  {
     String temp = atts.getName(i);
     if( temp.trim().equals(ELE_NAME) )
     allNameList.add(atts.getValue(i));
     }
  }
}

private void parseProduct(AttributeList atts)
{
  if( atts != null)
  {
  setting = new Hashtable();
  for(int i=0;i<atts.getLength();i++)
     setting.put(atts.getName(i),atts.getValue(i));
  } }//end parseProduct private void parseTypesList(AttributeList atts)
{
String temp = null;

  if( atts != null)
  {
  for(int i=0;i<atts.getLength();i++)
     {
     temp = atts.getName(i);
     if( temp.trim().equals(ELE_TYPE) )
     allTypeList.add(atts.getValue(i));
     }
    } }//end parseTypesList

private void parseProperty(AttributeList atts)
{
setting = new Hashtable();
    for(int i=0;i<atts.getLength();i++)
     setting.put(atts.getName(i),atts.getValue(i));
}//end parseProperty

  public void startElement(String localName, AttributeList atts)
   throws SAXException
{
String temp = null;

//如果是product信息元素,设置当前产品名
if( localName.trim().equals(ELE_PRODUCT) )
{
if(atts!=null) 
this.curProductName = atts.getValue(ELE_NAME);
}

//取全部产品名称列表
if( this.productFactor==null && localName.trim().equals(ELE_PRODUCT) ) 
{
parseNamesList(atts);
return;
}

//取一个产品的描述
if( this.productFactor!=null && this.elementFactor==null )
{
if( localName.trim().equals(ELE_PRODUCT) )
{
if( atts != null )
{
temp = atts.getValue(ELE_NAME);
if( temp.trim().equals(this.productFactor) )
parseProduct(atts);
}
}
return;
}

//取所有type的列表
if( this.productFactor!=null && this.elementFactor!=null && this.typeFactor==null) 
    {
     if( curProductName==null) return;
     if( curProductName.trim().equals(productFactor) && localName.trim().equals(elementFactor) )
     parseTypesList(atts);
     return;
    }
    
    //设置了type的值,取出它的所有属性值。
    if( productFactor!=null && elementFactor!=null && typeFactor!=null)
    {
     if( curProductName==null) return;
     if( this.curProductName.trim().equals(this.productFactor) && localName.trim().equals(this.elementFactor) )
     {
     if( atts != null)
     {
     temp = atts.getValue(ELE_TYPE);
     if( temp.trim().equals(this.typeFactor) )
     parseProperty(atts);
     }
     }
     return;
    }
    
} /**
结束解析元素
**/
public void endElement(String localName) 
throws SAXException
{
    if( localName.trim().equals(ELE_PRODUCT) ) curProductName=null;
}



  /**
  以下为出错处理
  **/
  
  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();  } 

}

解决方案 »

  1.   


    第二部分:package xml;
    /***
    解析setup.xml的parser模块用SAX2.0实现。请参考jaxp1.1的API文档。@author:sharetop([email protected])
    @version:1.0.0created date:2001.4.2*/import javax.xml.parsers.*;
    import org.xml.sax.*;
    import org.xml.sax.helpers.*;import java.util.*;
    import java.io.*;public class setupParser
    {
    private String xmlFile = null;/**
    构造函数
    @param filename 文件名
    **/
    public setupParser(String filename)
    {
    this.xmlFile = filename;
    }

    /**
    取出一个类型的元素的所有属性值
    @param product 产品名称
    @param environ 环境,如 ApplicationServer,DataBase
    @param type  类型,如 weblogic,tomcat,oracle
    @return  一个属性的哈希表。
    **/
    public Hashtable getProperty(String product,String environ,String type)
    {
    SAXParser parser;

    setupHandler handler = new setupHandler(product,environ,type);
    SAXParserFactory factory = SAXParserFactory.newInstance();

    factory.setValidating(true);

    try {
    parser = factory.newSAXParser();
    parser.parse(this.xmlFile,handler);
    }
    catch (Exception ex) 
    {
    ex.printStackTrace(System.err);
    }
    finally
    {
    return handler.getPropertyResult();
    }
    }

    /**
    取出所有属性类型的字串
    @param product 产品名称
    @param environ  环境,如ApplicationServer,DataBase
    @return  所有属性的type字段的值。
    **/
    public ArrayList getPropertyTypes(String product,String environ)
    {
    SAXParser parser;

    setupHandler handler = new setupHandler(product,environ);
    SAXParserFactory factory = SAXParserFactory.newInstance();

    //设置校验
    factory.setValidating(true);

    try {
    parser = factory.newSAXParser();
    parser.parse(this.xmlFile,handler);
    }
    catch (Exception ex) 
    {
    ex.printStackTrace(System.err);
    }
    finally
    {
    return handler.getTypesResult();
    }
    }

    /**
    取出所有产品名称列表
    @return 全部产品名称
    **/
    public ArrayList getProductNames()
    { SAXParser parser; setupHandler handler = new setupHandler(); SAXParserFactory factory = SAXParserFactory.newInstance();

    //设置校验
    factory.setValidating(true);

    try {
    parser = factory.newSAXParser();
    parser.parse(this.xmlFile,handler);
    }
    catch (Exception ex) 
    {
    ex.printStackTrace(System.err);
    }
    finally
    {
    return handler.getNamesResult();
    }
    }/**
    取出一个产品的信息
    @return 一个产品的信息的哈希表
    **/
    public Hashtable getProductInfo(String product)
    {
    SAXParser parser;

    setupHandler handler = new setupHandler(product);
    SAXParserFactory factory = SAXParserFactory.newInstance();

    //设置校验
    factory.setValidating(true);

    try {
    parser = factory.newSAXParser();
    parser.parse(this.xmlFile,handler);
    }
    catch (Exception ex) 
    {
    ex.printStackTrace(System.err);
    }
    finally
    {
    return handler.getPropertyResult();
    }
    }


    }
      

  2.   


    java.sun.com下个jaxp吧。