`
xurichusheng
  • 浏览: 344816 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用dom4j解析指定节点下的信息

    博客分类:
  • xml
阅读更多

需要的 jar 包:

dom4j-1.6.1.jar

jaxen-1.1.1.jar

log4j-1.2.8.jar

 

sql.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<sql>
		<user>
			<queryList>
				select * from t_user
			</queryList>
		</user>
	</sql>
</config>

 

java代码:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * @ClassName: CommonMethods
 * @Description: 公共方法
 * @author wenjianhai
 * @company 广州市道一信息技术有限公司
 * @date 2012-5-27
 * @version V1.0
 */

public final class CommonMethods {

	private static final Logger LOG = Logger.getLogger(CommonMethods.class);

	private CommonMethods() {
	}

	/**
	 * @Title: parseSqlXML
	 * @Description: 使用DOM4J解析xml文件
	 * @param sqlXMLPath
	 *            xml文件路径
	 * @param _node
	 *            xml节点
	 * @return String
	 * @author wenjianhai
	 * @date 2012-5-27
	 */
	@SuppressWarnings("rawtypes")
	public static String parseSqlXML(String sqlXMLPath, String _node) {

		LOG.info("into CommonMethods.parseSqlXML(...)");
		LOG.info("the sqlXMLPath is:" + sqlXMLPath);
		LOG.info("the xml node is:" + _node);

		if ((null != _node && !"".equals(_node))
				&& (null != sqlXMLPath && !"".equals(sqlXMLPath))) {

			try {
				LOG.info("put the file '" + sqlXMLPath + "' into InputStream.");
				// 加载xml文件到输入流中
				InputStream is = CommonMethods.class.getClassLoader()
						.getResourceAsStream(sqlXMLPath);
				//
				SAXReader reader = new SAXReader();

				// 读取xml文件,返回xml文档
				Document doc = reader.read(is);
				// 根节点
				Element root = doc.getRootElement();
				// 从当前节点的子节点中选择名称为_node的节点
				List rootList = root.selectNodes(_node);

				// xml元素
				Element element = null;

				// 返回的sql
				String sql = null;

				// 循环此节点,并取出对应的文本信息
				for (Object obj : rootList) {
					element = (Element) obj;
					sql = element.getTextTrim();
				}
				// 关闭输入流
				closeStream(is, null);

				LOG.info("out of CommonMethods.parseSqlXML(...)");

				return sql;

			} catch (DocumentException e) {
				LOG.error("read xml file '" + sqlXMLPath + "' faile!", e);
			} catch (Exception e) {
				LOG.error("parse Sql XML '" + sqlXMLPath + "' faile!", e);
			}
		}
		LOG.info("the sqlXMLPath and _node is null,return null.");
		LOG.info("out of CommonMethods.parseSqlXML(...)");
		return null;
	}

	/**
	 * @Title: closeStream
	 * @Description: 关闭输入/输出流
	 * @param is
	 *            : 字节输入流
	 * @param os
	 *            : 字节输出流
	 * @author wenjianhai
	 * @date 2012-5-27
	 */
	public static void closeStream(InputStream is, OutputStream os) {

		if (null != is) {
			try {
				is.close();
			} catch (IOException e) {
				LOG.error("close InputStream faile!", e);
			}
		}

		if (null != os) {
			try {
				os.close();
			} catch (IOException e) {
				LOG.error("close OutputStream faile!", e);
			}
		}
	}
}
 

测试: 使用junit4

@Test
	public void parseSqlXML() {
		String _node = "sql/mywb/queryList";
		String sqlXMLPath = "cn/com/do1/component/mywb/resource/sql.xml";
		String sql = CommonMethods.parseSqlXML(sqlXMLPath, _node);
		System.out.println(sql);
	}
 

测试结果:

sql=select * from t_user
分享到:
评论
1 楼 xurichusheng 2011-06-13  
/**
* @Title: dom4jParse
* @Description: 使用dom4j解析指定节点下的信息
* @param filePath : 要解析的文件的路径及文件名
* @param config : 要解析的节点
* @return String : 指定节点下的文本信息
*/
public static String dom4jParse(String filePath, String config){

String sql = "";

if (null!=config && !"".equals(config.trim())){

SAXReader reader = new SAXReader();

try {
InputStream is = XMLParse.class.getClassLoader().getResourceAsStream(
filePath);

Document document = reader.read(is);

/* 或者
* Document document = reader.read(
new File(filePath));*/

//获取文档的根节点
Element root = document.getRootElement();

//从当前节点的子节点中选择名称为 s 的节点
List rootList = root.selectNodes(config);

//循环此节点,并取出对应的文本信息
for(Object obj : rootList){
Element element = (Element)obj;
sql = element.getTextTrim();
}

} catch (DocumentException e) {
log.error("read xml file error.", e);
} catch (Exception e){
log.error("dom4j Parse xml file error.", e);
}
}

return sql;
}

相关推荐

    dom4j 解析(读取) xml 节点数据

    在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...

    dom4j---xml解析jar包

    **DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...

    dom4j常用方法

    dom4j常用方法 i.SAXReader sr = new SAXReader(); 生成解析器对象 ii.解析器对象.read(file对象); 解析文件生成Document对象 iii.文档对象.getRootElement() 获取跟元素节点 iv.元素节点.elements() 获取到指定...

    XML解析技术DOM4J解析

    ### XML解析技术DOM4J解析 #### DOM4J解析概览 DOM4J是一种高性能、功能强大且极其易于使用的Java XML API,它最初是作为JDOM的一个智能分支发展起来的,自2000年下半年开始持续开发。DOM4J不仅在功能上超越了基本...

    使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点

    在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除元素以及获取元素节点。 1. **添加元素节点** 在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其...

    dom4j解析XML所需要的jar包

    为了在Java项目中使用DOM4J解析XML,你需要将这两个jar文件(dom4j-1.6.1和jaxen-1.1-beta-7.jar)添加到你的类路径(classpath)中。这可以通过在IDE中配置构建路径,或者在命令行中指定 `-cp` 参数来完成。一旦...

    dom4j解析案例

    这个例子展示了如何使用DOM4J解析XML,提取指定节点(“item”),并将属性和文本内容存储在Map中。实际应用中,你可能需要根据实际的XML结构来调整路径选择和数据处理逻辑。 总之,DOM4J是处理XML的强大工具,尤其...

    DOM4J解析XML

    1. 加载XML文档:使用`DocumentFactory`创建`Document`对象,可以指定解析器类型(DOM、SAX或StAX)。 2. 查询XML:通过XPath表达式或者`Element`对象的方法查找XML元素。 3. 修改XML:可以添加、删除或修改`Element...

    dom4j解析xml

    本文将详细介绍如何使用DOM4J解析XML文档,并演示如何将数据库中的数据存储到XML文件中。 #### 一、DOM4J的基本使用 ##### 1.1 读取XML文件 DOM4J提供了多种方法来读取XML文件。其中,最常用的方法是通过`...

    XML的DOM4J的解析方式

    XML(eXtensible Markup Language)是一种用于存储和交换数据的标记语言,广泛应用于软件开发、数据存储和网络通信等领域...通过DOM4J解析这些文件,你可以理解XML文档的结构,提取所需信息,或者根据需求修改XML配置。

    用dom4j解析xml文件

    本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,我们需要理解DOM4J的工作原理。DOM4J采用的是DOM(Document Object Model)模型,它将整个XML文档加载到内存中形成一棵...

    dom4j解析XML文件格式

    ### DOM4j解析XML文件格式详解 #### 一、DOM4j概述与环境搭建 DOM4j(Document Object Model for XML)是一款Java平台上的开源XML处理库,它提供了灵活、高效且易于使用的API来处理XML数据。DOM4j支持DOM、SAX、...

    java_Dom4j解析XML详解

    Java DOM4J解析XML详解 XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。DOM4J是Java中一个强大的、轻量级的处理XML的库,它提供了丰富的API来读取、...

    dom4j 工具类 使用例子

    1. `parseXML(String xmlString)`: 这个方法接收一个XML字符串,使用DOM4J解析器将其转化为Document对象,便于后续处理。 2. `createXML(String rootElementName, Map attributes)`: 创建一个新的XML文档,根元素名...

    dom4j多节点定位解析,及API,JAR

    在这个主题中,我们将深入探讨DOM4J如何实现多节点定位解析,以及如何利用其API和JAR文件进行XML处理。 首先,理解DOM4J的核心概念是至关重要的。DOM4J使用的是Document Object Model(DOM)模型,这是一种树型结构...

    dom4j 解析xml例子

    在这个“dom4j解析xml例子”中,我们将深入探讨DOM4J如何帮助开发者在Java环境中有效地处理XML数据。 首先,我们需要了解XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置...

    DOM4J 解析XML

    使用DOM4J解析这个XML文件的步骤如下: 1. **初始化DOM4J环境**:首先需要创建`Document`对象,该对象表示整个XML文档。这一步通常涉及到创建`DocumentBuilderFactory`和`DocumentBuilder`对象。 ```java ...

    dom4j解析XML的两个JAR包(dom4j-1.6.1.jar 和 jaxen.jar)

    当结合使用DOM4J和JAXEN时,DOM4J作为XML解析和操作的库,而JAXEN则作为DOM4J中的XPath引擎,两者共同完成XML的解析、查询和操作任务。例如,我们可以先用DOM4J读取和解析XML文件,然后利用JAXEN的XPath能力来查找...

    dom4j需要的包

    4. **XML Schema验证**:DOM4J可以对XML文档进行Schema验证,确保文档符合指定的XML Schema定义,保证数据的准确性和一致性。 5. **转换XML到其他格式**:DOM4J可以将XML转换为Java对象,也可以将Java对象转换为XML...

    dom4j解析xml嵌套格式

    **DOM4J解析XML嵌套格式** XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档结构定义等领域。在Java编程中,DOM4J是一个非常流行的XML处理库,它提供了丰富的API来...

Global site tag (gtag.js) - Google Analytics