`
wandejun1012
  • 浏览: 2737137 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java读取xml例子 SAXReader

    博客分类:
  • java
 
阅读更多

用到的是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

 

 

分享到:
评论

相关推荐

    一个Java 解析XML的例子

    在这个例子中,我们首先创建了一个`SAXReader`对象,然后读取指定路径的XML文件。通过`read()`方法,我们可以得到一个`Document`对象,它是XML文档的根节点。接着,我们获取根元素,并遍历它的所有子元素,打印它们...

    Java实现XML文档到word文档转换

    ### Java实现XML文档到Word文档转换的关键技术及实践 #### XML简介与应用 XML(Extensible Markup Language,可扩展标记语言)是一种标记语言,旨在定义一套规则,通过这些规则将文档划分为多个部分并对其进行标记...

    java读取XML文件

    下面将详细介绍如何使用Java读取XML文件。 1. DOM解析器: DOM解析器将整个XML文件加载到内存中,创建一个树形结构,便于遍历和操作。以下是一个简单的示例: ```java import javax.xml.parsers....

    dom4j操作XMl例子

    5. **读取XML文档**:如果要解析已存在的XML文件,可以使用`SAXReader`类读取。 ```java SAXReader reader = new SAXReader(); Document doc = reader.read(new File("path_to_xml_file.xml")); ``` 6. **遍历...

    Java用DOM4J读取XML

    下面是一个简单的例子,展示了如何使用DOM4J读取一个XML文件: ```java package com.hsinghsu.testXML; import java.io.File; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document...

    java读写xml文档_dom4j.jar

    本主题将专注于DOM4J库,它是一个灵活且功能强大的Java XML API,用于读取、写入、操作和导航XML文档。DOM4J.jar是这个库的实现,它提供了比标准DOM更高效、更易于使用的API。 DOM4J的使用主要围绕以下几个核心概念...

    用java读取xml文件的四种方法.pdf

    在示例代码中,首先创建 `SAXReader` 对象,然后使用 `read()` 方法读取 XML 文件。通过 `getRootElement()` 获取根元素,再使用 `elementIterator()` 迭代 `VALUE` 元素,最后通过 `elementText()` 方法提取 `NO` ...

    用java读取xml文件的四种方法

    在Java中,读取XML文件是常见的数据处理任务,尤其在处理配置文件、数据交换或存储结构化信息时。本文将详细介绍四种不同的方法来实现这一功能:DOM、DOM4J、JDOM和StAX。 1. DOM(文档对象模型)方法: DOM是一种...

    JAVA读取.删除.修改XML文档

    ### JAVA读取、删除、修改XML文档 在Java中处理XML文档是一项常见需求,尤其是在集成系统、解析配置文件或处理Web服务时。本文将详细介绍如何使用Java来读取、删除和修改XML文档。 #### 一、环境搭建与依赖库介绍 ...

    使用Sax技术读XML文档:SaxReaderXML.rar

    本篇文章将深入探讨如何使用SAX技术读取XML文档,以及SaxReaderXML.rar压缩包中的相关内容。 首先,SAX解析器的工作方式是逐行扫描XML文档,当遇到元素、属性、文本等内容时,会触发相应的事件回调函数。这种解析...

    java操作XML实例代码

    以下是一个简单的Java程序,展示了如何使用DOM4J进行XML文件的读取、添加、更新和删除操作: ```java import java.io.File; import java.io.FileWriter; import java.util.Iterator; import java.util.List; import...

    用 dom4j解析xml例子

    本文将深入解析一个使用DOM4J进行XML文件读取的例子,并详细阐述其中涉及的关键知识点。 ### DOM4J概述 DOM4J(Document Object Model for Java)是一个开源的、高性能的XML解析器。它提供了类似于DOM的接口,但比...

    SAXReader所需jar包.zip

    在这个例子中,`SAXReader.read()`方法会使用SAX解析器读取XML文件,并返回一个`Document`对象,这个对象可以被进一步处理,例如通过XPath查询来获取XML文档的特定部分。 总之,SAXReader结合了SAX解析器的效率和...

    domj4读取xml文件案例

    在这个例子中,我们创建了一个`SAXReader`实例,然后用它来读取名为"test-xml.xml"的XML文件。解析完成后,我们获取XML文档的根元素,并遍历所有的子元素。对于每个元素,我们打印出其名称、文本内容以及所有属性的...

    JAVA XML解析实例

    XML(eXtensible Markup Language)是一种用于标记数据的...无论是在配置文件的读取、服务间的通信,还是在XML文档的生成和解析,Java都提供了强大的支持。了解并熟练掌握这些解析方法对于Java开发人员来说至关重要。

    dom4j解析xml例子

    这个“dom4j解析xml例子”压缩包应该包含了一些示例代码、帮助文档和使用说明,旨在帮助初学者快速理解和应用DOM4J。 在XML解析领域,DOM(Document Object Model)是一种将XML文档转换为内存对象树的方法。DOM4J是...

    dom4j 解析xml文件小例子

    2. 加载XML文件:使用`SAXReader`类读取XML文件并将其转化为`Document`对象。 ```java SAXReader reader = new SAXReader(); File xmlFile = new File("path_to_your_xml_file.xml"); Document document = reader....

    Java获取XML节点总结之读取XML文档节点的方法

    DOM4J是一个流行的Java XML API,提供了丰富的功能来读取、写入和操作XML文档。本篇文章将详细介绍如何使用DOM4J库来读取XML文档中的节点。 首先,要使用DOM4J,你需要在项目中引入其对应的JAR文件。你可以从官方...

    dom4j读写xml文件

    在这个小例子中,我们将探讨如何利用DOM4J来实现XML文件的读写操作。首先,我们需要确保引入了必要的依赖,包括`dom4j-1.6.1.jar`和`jaxen-1.1-beta-6.jar`这两个库。`jaxen`库是DOM4J中解析XPath表达式所必需的。 ...

Global site tag (gtag.js) - Google Analytics