/**
* 解析包含有DB连接信息的XML文件
* 格式必须符合如下规范:
* 1. 最多三级,每级的node名称自定义;
* 2. 二级节点支持节点属性,属性将被视作子节点;
* 3. CDATA必须包含在节点中,不能单独出现。
*
* 示例1——三级显示:
* <db-connections>
* <connection>
* <name>DBTest</name>
* <jndi></jndi>
* <url>
* <![CDATA[jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=UTF8]]>
* </url>
* <driver>org.gjt.mm.mysql.Driver</driver>
* <user>test</user>
* <password>test2012</password>
* <max-active>10</max-active>
* <max-idle>10</max-idle>
* <min-idle>2</min-idle>
* <max-wait>10</max-wait>
* <validation-query>SELECT 1+1</validation-query>
* </connection>
* </db-connections>
*
* 示例2——节点属性:
* <bookstore>
* <book category="cooking">
* <title lang="en">Everyday Italian</title>
* <author>Giada De Laurentiis</author>
* <year>2005</year>
* <price>30.00</price>
* </book>
*
* <book category="children" title="Harry Potter" author="J K. Rowling" year="2005" price="$29.9"/>
* </bookstore>
*
* @param configFile
* @return
* @throws Exception
*/
public static List<Map<String, String>> parseDBXML(String configFile) throws Exception {
List<Map<String, String>> dbConnections = new ArrayList<Map<String, String>>();
InputStream is = Parser.class.getResourceAsStream(configFile);
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(is);
Element connections = document.getRootElement();
Iterator<Element> rootIter = connections.elementIterator();
while (rootIter.hasNext()) {
Element connection = rootIter.next();
Iterator<Element> childIter = connection.elementIterator();
Map<String, String> connectionInfo = new HashMap<String, String>();
List<Attribute> attributes = connection.attributes();
for (int i = 0; i < attributes.size(); ++i) { // 添加节点属性
connectionInfo.put(attributes.get(i).getName(), attributes.get(i).getValue());
}
while (childIter.hasNext()) { // 添加子节点
Element attr = childIter.next();
connectionInfo.put(attr.getName().trim(), attr.getText().trim());
}
dbConnections.add(connectionInfo);
}
return dbConnections;
}
/**
* 解析包含有DB连接信息的XML文件
* 格式必须符合如下规范:
* 1. 最多三级,每级的node名称自定义;
* 2. 二级节点支持节点属性,属性将被视作子节点;
* 3. CDATA必须包含在节点中,不能单独出现。
*
* 示例1——三级显示:
* <db-connections>
* <connection>
* <name>DBTest</name>
* <jndi></jndi>
* <url>
* <![CDATA[jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=UTF8]]>
* </url>
* <driver>org.gjt.mm.mysql.Driver</driver>
* <user>test</user>
* <password>test2012</password>
* <max-active>10</max-active>
* <max-idle>10</max-idle>
* <min-idle>2</min-idle>
* <max-wait>10</max-wait>
* <validation-query>SELECT 1+1</validation-query>
* </connection>
* </db-connections>
*
* 示例2——节点属性:
* <bookstore>
* <book category="cooking">
* <title lang="en">Everyday Italian</title>
* <author>Giada De Laurentiis</author>
* <year>2005</year>
* <price>30.00</price>
* </book>
*
* <book category="children" title="Harry Potter" author="J K. Rowling" year="2005" price="$29.9"/>
* </bookstore>
*
* @param configFile
* @return
* @throws Exception
*/
public static List<Map<String, String>> parseDBXML(String configFile) throws Exception {
List<Map<String, String>> dbConnections = new ArrayList<Map<String, String>>();
InputStream is = Parser.class.getResourceAsStream(configFile);
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(is);
Element connections = document.getRootElement();
Iterator<Element> rootIter = connections.elementIterator();
while (rootIter.hasNext()) {
Element connection = rootIter.next();
Iterator<Element> childIter = connection.elementIterator();
Map<String, String> connectionInfo = new HashMap<String, String>();
List<Attribute> attributes = connection.attributes();
for (int i = 0; i < attributes.size(); ++i) { // 添加节点属性
connectionInfo.put(attributes.get(i).getName(), attributes.get(i).getValue());
}
while (childIter.hasNext()) { // 添加子节点
Element attr = childIter.next();
connectionInfo.put(attr.getName().trim(), attr.getText().trim());
}
dbConnections.add(connectionInfo);
}
return dbConnections;
}
相关推荐
这个例子对于初学者来说非常有帮助,因为它展示了Dom4j在实际应用中的基本用法。 总之,Dom4j是一个强大的XML处理库,适用于各种XML相关的任务,无论是读取、解析、修改还是创建XML文档。其简洁的API和对DOM和SAX的...
在这个例子中,我们将深入探讨Dom4j的核心功能和使用方法。 **1. XML解析** 解析XML文档是Dom4j的基本操作之一。通过`DocumentBuilderFactory`和`DocumentBuilder`,我们可以将XML字符串或文件转换为`Document`...
### DOM4j:高效、灵活的XML处理框架 DOM4j是一个开源的Java库,用于处理XML文档。它提供了一套简洁且强大的API,使得开发者能够轻松地读取、创建和修改XML数据。DOM4j的设计哲学是尽可能接近XML本身,从而让开发者...
在这个“dom4j简单例子”中,我们将深入理解DOM4J的基本用法和核心概念,以帮助你更好地利用这个库在实际项目中处理XML数据。 1. **DOM4J基本概念** - **Document**: 表示整个XML文档,它是DOM4J树结构的根节点。 ...
在这个“dom4j解析xml例子”中,我们将深入探讨DOM4J如何帮助开发者在Java环境中有效地处理XML数据。 首先,我们需要了解XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的API,使得开发者可以方便地创建、解析、修改以及操作XML文档。在这个压缩包文件中,包含的示例应该详细展示了DOM4J在XML处理中的三个主要功能:...
DOM4J是Java中一个非常流行的XML处理库,它提供了丰富的API来解析、创建、修改XML文档。本篇文章将深入探讨如何利用DOM4J进行XML的基本操作,包括增加元素、删除元素、修改元素和查询元素。 1. **解析XML文档** 在...
在提供的资源中,"例子"可能包含DOM4J的使用示例,帮助初学者理解如何实际操作XML文档。"jar包"是DOM4j的库文件,包含了所有所需的类和方法,可以直接导入到项目中使用。"教材"可能是教程或指南,详细解释DOM4j的...
总的来说,这个"dom4j基本例子"涵盖了DOM4J的基本操作,包括XML的解析、元素的增删改查以及使用XPath进行查询。通过学习和理解这个例子,你可以更好地掌握DOM4J库,并将其应用到自己的XML处理任务中。如果你深入研究...
### DOM4j 教程与实例详解 #### 一、DOM4j简介 DOM4j是一种用于处理XML的Java API,其设计目的是提供一个高效、功能丰富且易于使用的API。DOM4j是一个开源项目,可以在SourceForge等开源平台上获取到。DOM4j不仅在...
在提供的"TestDom4jLog4j"项目中,应该包含了使用DOM4j处理XML和log4j记录日志的示例代码,通过阅读和运行这些代码,可以更好地理解DOM4j和log4j的使用方法。对于初学者来说,这是一个很好的实践和学习资源。
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的读取、创建、修改和解析变得简单易行。在本示例中,"dom4jExample.java"是一个Java程序,它展示了如何利用DOM4J库来操作XML文件...
在这个"dom4j配置文件例子"中,我们将会深入探讨DOM4J的核心概念和如何在实际项目中应用。 首先,DOM4J的主要组件包括Element、Attribute、Document、Namespace等,它们分别代表了XML文档中的元素、属性、文档和...
**DOM4J 源文件详解** DOM4J 是一个非常强大的 Java XML API,它提供了丰富的功能,使得处理 XML 文件变得简单而高效。这个压缩包包含 DOM4J 的源代码、示例以及 jar 包,这对于我们理解其内部工作原理和进行二次...
"自己写的 dom4j的例子"很显然是个人编写的DOM4J应用实例,可能包含了一些特定场景下的XML处理代码,比如解析配置文件、读写XML数据库等。 总的来说,这个压缩包是学习和实践DOM4J处理XML的理想资源。通过这些示例...
**DOM4j 知识点详解** DOM4j 是一个灵活且功能强大的Java库,用于处理XML文档。它提供了一套全面的API来操作XML,包括读取、创建、修改和解析XML文档。以下是DOM4j中一些主要接口及其功能的详细解释: 1. **...
### DOM4j 示例详解:掌握XML处理的所有常用方法 #### 引言 DOM4j(Document Object Model for Java)是一个Java编程语言中的开源库,用于处理XML文档。它提供了类似于DOM、SAX和JDOM的API,但在性能和功能上往往...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的读取、创建、修改和分析变得简单。XPP3则是一个轻量级的XML解析器,它作为DOM4J的一个可选后端,能够快速高效地解析XML流。在...
Java DOM4J是一个强大的、灵活的Java库,用于处理XML文档。它提供了全面的API来创建、修改和查询XML文档,使得在Java中操作XML变得简单。在这个“java dom4j 简单示例”中,我们将探讨如何在Spring框架的上下文中,...
在这个压缩包中,你将找到一个DOM4J用于XML操作的例子,这对于初学者来说是一个很好的学习资源。DOM4J相比Java内置的DOM API更加轻量级,性能更优,而且它的API设计得更加友好,易于理解和使用。 XML(eXtensible ...