读取xml方法

例子

import java.io.IOException;
import java.io.InputStream;


public class SqlStatment {

    /**
     * 取得SQL情报
     *
     * @param fileName SQL文文件
     * @param id SQL文ID
     * @return SQL文
     */
    public static StringBuffer getSql(String fileName, String id) {
        StringBuffer strSql = null;
        SqlDigester sqlDigester = new SqlDigester();
        SqlXML sqlXml = null;
        InputStream in = null;

        try {
            in = SqlDigester.class.getResourceAsStream("../../app/data/" +
                    fileName);
            sqlXml = sqlDigester.load(in);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e1) {
                }
            }
        }

        if (sqlXml != null) {
            Sql sql = sqlXml.getSql(id);

            if (sql != null) {
                strSql = new StringBuffer(sql.getStatement());
            }
        }

        return strSql;
    }
}
 

import org.apache.commons.digester.Digester;

import java.io.IOException;
import java.io.InputStream;


public class SqlDigester {

    /**
     * 分析规则制定
     *
     * @param digester 分析工具
     */
    private void init(Digester digester) {
     
        // 不进行XML与相应的DTD的合法性验证
        digester.setValidating(false);
       
        // 当遇到<session-bean-sql>时创建一个Sql对象,并将其放在栈顶
        digester.addObjectCreate("session-bean-sql", SqlXML.class);
       
        // 当遇到<session-bean-sql>的字元素<sql>时创建一个Sql对象,并将其放在栈顶
        digester.addObjectCreate("session-bean-sql/sql", Sql.class);
       
        // 根据<sql>元素的属性,对刚创建的sql对象的属性进行设置
        digester.addSetProperties("session-bean-sql/sql", "id", "id");
       
        // 当遇到<sql>的字元素<statement>將其放在sql對象的statement屬性中
        digester.addBeanPropertySetter("session-bean-sql/sql/statement",
            "statement");
       
        // 当再次遇到<session-bean-sql>的子元素<sql>时创建一个Sql对象,并将其放在栈顶,同时调用第二栈顶元素(sqlXML对象)的addSql方法。
        digester.addSetNext("session-bean-sql/sql", "addSql");
    }

    /**
     * 分析
     *
     * @param in 分析文件
     * @return SqlXML 结果
     */
    public SqlXML load(InputStream in) throws Exception {
        Digester dgstr = new Digester();
        init(dgstr);
        try {
            return (SqlXML) dgstr.parse(in);
        } catch (IOException e) {
            throw new Exception("Error occured When loading data", e);
        }
    }
}

import java.util.HashMap;


public class SqlXML {
    private HashMap map = new HashMap();
    public void addSql(Sql sql) {
        map.put(sql.getId(), sql);
    }
    public Sql getSql(String id) {
        return (Sql) map.get(id);
    }
}

public class Sql {
 
 private String id = null;
 
 private String statement = null;
 
 public String getId() {
  return id;
 }


 public void setId(String id) {
  this.id = id;
 }

 public String getStatement() {
  return statement;
 }


 public void setStatement(String statement) {
  this.statement = statement;
 }
}

xml文件

<?xml version="1.0" encoding="UTF-8"?>

<session-bean-sql>
  <sql id="xxx"> 
        <statement> 

               sql文

        </statement>
    </sql>
</session-bean-sql>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值