java读取xml事例 SAXReader

java读取xml例子 SAXReader

用到的是DOM4J里面的SAXReader类,需要下载dom4j的jar包。

本文为了方便起见,特地在末尾上传了它的jar包。

 

此util类的功能是读取xml中的关于数据库配置的URL、用户名、密码。

util类如下:

 

 

package com.vastis.util;

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class ReadSpringXmlUtil {
		
	public void iterateWholeXML(String filename, HashMap<String, String> hm) throws Exception{

		SAXReader saxReader = new SAXReader();

		try {
			
			Document document = saxReader.read(new File(filename));
			Element root = document.getRootElement();

			//遍历根结点,即第一层
			for (Iterator iter = root.elementIterator(); iter.hasNext();) {
				Element element = (Element) iter.next();
				// 获取id为dataSource的节点的bean
				if(element!=null){
					Attribute ageAttr = element.attribute("id");
					if (ageAttr != null && !ageAttr.equals("")) {
						String id = ageAttr.getValue();
						if (id != null &&  id.equals("dataSource")) {
							// 遍历第二层(即driverClassName,url,username,password),并进行处理
							for (Iterator iterInner = element.elementIterator(); iterInner.hasNext();) {
								Element elementInner = (Element) iterInner.next();	
								if(elementInner!=null && !elementInner.equals("")){
									//获取name属性
									Attribute dsAttr = elementInner.attribute("name");
									if(dsAttr!=null && !dsAttr.equals(""))										
											//下面开启遍历第3层,即4个property
											for (Iterator iterThird = elementInner.elementIterator(); iterThird
											.hasNext();) {
												Element elementThird = (Element) iterThird.next();
												if(elementThird!=null && !elementThird.equals("")){
													if(elementThird.getName().equals("value")){
														hm.put(dsAttr.getValue(), elementThird.getText());
//														System.out.println("name="+elementThird.getName());
//														System.out.println("value="+elementThird.getText());
													}
												}
												
											}
								}
								
							}
						} 
					} 

					
				}
			
			}

		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new Exception(e);
		}
	}
	
}
 

 

调用util类的函数如下:将此函数放在main函数中即可跑起来。

 

 

/**
     * 读取数据库配置,从spring.conf.xml中读取
     * @throws Exception
     */
    private void configDBInfo() throws Exception{    	
    	HashMap<String, String> hashMap= new HashMap<String, String>();
    	ReadSpringXmlUtil rsxu=new ReadSpringXmlUtil();
    	rsxu.iterateWholeXML(FILE_PATH,hashMap);
    	try{
    		if(hashMap!=null && hashMap.size()>0){
        		for(java.util.Iterator  iter=hashMap.keySet().iterator();iter.hasNext();){
        			Object key=iter.next();
        			String value=hashMap.get(key);
        			if(((String)key).equals(Constants.URL)){
        				ReadOnlyConfiger.setUrl(value);
        			}else if(((String)key).equals(Constants.USERNAME)){
        				ReadOnlyConfiger.setUserName(value);
        			}else if(((String)key).equals(Constants.PASSWORD)){
        				ReadOnlyConfiger.setPassword(value);
        			}
        		}
        	}else{
        		System.err.println("数据库配置信息未找到,请查看spring.conf.xml文件中的数据配置信息是否存在!");
        	}
    	}catch(Exception ex){
    		System.out.println(ex.toString());
    		throw new Exception(ex);
    	}
    }
 

 

xml源文件如下:

 

 

<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
  	<!--JDBC数据源配置-->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName">
			<value>oracle.jdbc.driver.OracleDriver</value>
		</property>
		<property name="url">
			<value>jdbc:oracle:thin:@11.5.56.199:1521/caqa</value>
		</property>
		<property name="username">
			<value>system</value>
		</property>
		<property name="password">
			<value>admin</value>
		</property>
	</bean>
  
	<!-- hibernate 配置文件 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource"/>
		</property>
		<property name="configLocation">
	    	<value>/WEB-INF/classes/conf/hibernate.cfg.xml</value>
	  	</property>
	</bean>
	
	<!-- hibernate 事务工厂 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
	  <property name="sessionFactory">
	    <ref local="sessionFactory"/>
	  </property>
	</bean>

	<!-- hibernate 事务代理 -->
	<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
	  <property name="transactionManager">
	    <ref bean="transactionManager"/>
	  </property>
	  <property name="transactionAttributes">
	    <props>
	      <prop key="save*">PROPAGATION_REQUIRED</prop>
	      <prop key="Create*">PROPAGATION_REQUIRED</prop>
	      <prop key="create*">PROPAGATION_REQUIRED</prop>
	      <prop key="add*">PROPAGATION_REQUIRED</prop>
	      <prop key="update*">PROPAGATION_REQUIRED</prop>
	      <prop key="copy*">PROPAGATION_REQUIRED</prop>
	    </props>
	  </property>
	</bean>

	<!--JDBC事务工厂-->
	<bean id="JDBCtransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	  <property name="dataSource">
	    <ref local="dataSource"/>
	  </property>
	</bean>
  
	<!--JDBC 事务代理-->
	<bean id="JDBCDAOProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
	  <property name="transactionManager">
	    <ref bean="JDBCtransactionManager"/>
	  </property>
	  <property name="transactionAttributes">
	    <props>
	      <prop key="insert*">PROPAGATION_REQUIRED</prop>
	      <prop key="update*">PROPAGATION_REQUIRED</prop>
	      <prop key="delete*">PROPAGATION_REQUIRED</prop>
	      <prop key="*">PROPAGATION_REQUIRED</prop>
	    </props>
	  </property>
	</bean>

  <!-- base -->
  <!-- base:project -->
  <bean id="projectDAO" class="com.vastis.base.project.dao.impl.ProjectDAOHibernateImpl">
    <property name="sessionFactory">
      <ref local="sessionFactory"/>
    </property>
  </bean>
  <bean id="projectFacade" parent="txProxyTemplate">
    <property name="target">
      <bean class="com.vastis.base.project.service.impl.ProjectFacadeImpl">
        <property name="projectDAO">
          <ref bean="projectDAO"/>
        </property>
      </bean>
    </property>
  </bean>
  <bean id="projectHelper" parent="txProxyTemplate">
    <property name="target">
      <bean class="com.vastis.base.project.service.impl.ProjectHelperImpl">
        <property name="projectDAO">
          <ref bean="projectDAO"/>
        </property>
      </bean>
    </property>
  </bean>
  <!-- end base:project -->

  <!--base:param-->
  <bean id="paramDAO" class="com.vastis.base.param.dao.impl.ParamDAOHibernateImpl">
    <property name="sessionFactory">
      <ref local="sessionFactory"/>
    </property>
  </bean>
  <bean id="paramHelper" parent="txProxyTemplate">
    <property name="target">
      <bean class="com.vastis.base.param.service.impl.ParamHelperImpl">
        <property name="paramDAO">
          <ref bean="paramDAO"/>
        </property>
      </bean>
    </property>
  </bean>
  <bean id="paramFacade" parent="txProxyTemplate">
    <property name="target">
      <bean class="com.vastis.base.param.service.impl.ParamFacadeImpl">
        <property name="paramDAO">
          <ref bean="paramDAO"/>
        </property>
      </bean>
    </property>
  </bean>
  <!-- end base:param -->

  <!--ccms:qamonitor-->
  <bean id="qaMonitorDAOHibernate" class="com.vastis.ccms.qamonitor.dao.impl.QAMonitorDAOHibernateImpl">
    <property name="sessionFactory">
      <ref local="sessionFactory"/>
    </property>
  </bean>

  <bean id="QamonitorFacade" parent="txProxyTemplate">
    <property name="target">
      <bean class="com.vastis.ccms.qamonitor.service.impl.QAMonitorFacadeImpl">
        <property name="qaMonitorDAOHibernate">
          <ref bean="qaMonitorDAOHibernate"/>
        </property>
      </bean>
    </property>
  </bean>
  <bean id="QamonitorHelper" parent="txProxyTemplate">
    <property name="target">
      <bean class="com.vastis.ccms.qamonitor.service.impl.QAMonitorHelperImpl">
        <property name="qamonitorDAOHibernate">
          <ref bean="qaMonitorDAOHibernate"/>
        </property>
      </bean>
    </property>
  </bean>
  <!-- end ccms:qamonitor-->
  
  <!-- start ccms:staff -->
  <bean id="staffDAO" class="com.vastis.ccms.staff.dao.impl.StaffDAOHibernateImpl">
    <property name="sessionFactory">
      <ref local="sessionFactory"/>
    </property>
  </bean>
  
   <bean id="staffJDBCDAO" class="com.vastis.ccms.staff.dao.impl.StaffDAOJDBCImpl">
    <property name="dataSource">
      <ref local="dataSource"/>
    </property>
  </bean>
    
  <bean id="staffFacade" parent="txProxyTemplate">
    <property name="target">
      <bean class="com.vastis.ccms.staff.service.impl.StaffFacadeImpl">
        <property name="staffDAOHibernate">
          <ref bean="staffDAO"/>
        </property>
        <property name="staffDAOJDBC">
          <ref bean="staffJDBCDAO"/>
        </property>
      </bean>
    </property>
  </bean>

  <bean id="staffHelper" parent="txProxyTemplate">
    <property name="target">
      <bean class="com.vastis.ccms.staff.service.impl.StaffHelperImpl">
        <property name="staffDAOHibernate">
          <ref bean="staffDAO"/>
        </property>
        <property name="staffDAOJDBC">
          <ref bean="staffJDBCDAO"/>
        </property>
      </bean>
    </property>
  </bean>
  <!-- end ccms:staff -->	
	
  <bean id="MenuManagerFacade" class="com.vastis.menu.service.FacadeImpl"/>
  <bean id="MenuManagerHelper" class="com.vastis.menu.service.MenuManagerHelperImpl"/>

	<bean id="securityFacade" parent="txProxyTemplate">
	   <property name="target">
	     <bean class="com.vastis.security.service.impl.SecurityFacadeImpl">
	     </bean>
	   </property>
	</bean>
</beans>
 

refurl:http://hi.baidu.com/yuletianxia750/blog/item/920dae456c21fb8fb2b7dc90.html