给你个例子吧。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(); }
}
解决方案 »
- 关于client.invoke(string , object[])
- 用java怎么调用webservicehttp://www.webxml.com.cn/WebServices/WeatherWebService.asmx?w
- 熟悉axis的进来
- 哪位有简单些的jsp的源代码?找好久找不到,先谢谢了!!!
- java socket的问题
- 写第一个SessionBean就栽了跟头,请诸位老大给指点一下?高分相谢.
- 100分求助一个最基础的JDBC问题,差点没脸提出来……
- 帮我修改个 java scpit 很短 7句 在线等中
- 关于commons-io-2.4.jar包的问题
- 求助Spark高手,如何用spark去除重复列数据
- 有无把xml转化为excel文档的java的api,或其它实现方法?
- 关于EJB的环境配置我一点不懂,各位大虾有请!分必给!
第二部分: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();
}
}
}
java.sun.com下个jaxp吧。