`

dom4j例子

    博客分类:
  • xml
 
阅读更多

/**
  * 解析包含有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例子,可以解析大部分的XML

    这个例子对于初学者来说非常有帮助,因为它展示了Dom4j在实际应用中的基本用法。 总之,Dom4j是一个强大的XML处理库,适用于各种XML相关的任务,无论是读取、解析、修改还是创建XML文档。其简洁的API和对DOM和SAX的...

    Dom4J完成例子,Dom4J

    在这个例子中,我们将深入探讨Dom4j的核心功能和使用方法。 **1. XML解析** 解析XML文档是Dom4j的基本操作之一。通过`DocumentBuilderFactory`和`DocumentBuilder`,我们可以将XML字符串或文件转换为`Document`...

    dom4j例子与简介

    ### DOM4j:高效、灵活的XML处理框架 DOM4j是一个开源的Java库,用于处理XML文档。它提供了一套简洁且强大的API,使得开发者能够轻松地读取、创建和修改XML数据。DOM4j的设计哲学是尽可能接近XML本身,从而让开发者...

    dom4j简单例子

    在这个“dom4j简单例子”中,我们将深入理解DOM4J的基本用法和核心概念,以帮助你更好地利用这个库在实际项目中处理XML数据。 1. **DOM4J基本概念** - **Document**: 表示整个XML文档,它是DOM4J树结构的根节点。 ...

    dom4j 解析xml例子

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

    dom4j 例子,演示了3个功能

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的API,使得开发者可以方便地创建、解析、修改以及操作XML文档。在这个压缩包文件中,包含的示例应该详细展示了DOM4J在XML处理中的三个主要功能:...

    用dom4j操作xml的例子

    DOM4J是Java中一个非常流行的XML处理库,它提供了丰富的API来解析、创建、修改XML文档。本篇文章将深入探讨如何利用DOM4J进行XML的基本操作,包括增加元素、删除元素、修改元素和查询元素。 1. **解析XML文档** 在...

    dom4j 例子、jar包、教材

    在提供的资源中,"例子"可能包含DOM4J的使用示例,帮助初学者理解如何实际操作XML文档。"jar包"是DOM4j的库文件,包含了所有所需的类和方法,可以直接导入到项目中使用。"教材"可能是教程或指南,详细解释DOM4j的...

    dom4j基本例子

    总的来说,这个"dom4j基本例子"涵盖了DOM4J的基本操作,包括XML的解析、元素的增删改查以及使用XPath进行查询。通过学习和理解这个例子,你可以更好地掌握DOM4J库,并将其应用到自己的XML处理任务中。如果你深入研究...

    DOM4j教程 例子

    ### DOM4j 教程与实例详解 #### 一、DOM4j简介 DOM4j是一种用于处理XML的Java API,其设计目的是提供一个高效、功能丰富且易于使用的API。DOM4j是一个开源项目,可以在SourceForge等开源平台上获取到。DOM4j不仅在...

    DOM4j和log4j例子详解

    在提供的"TestDom4jLog4j"项目中,应该包含了使用DOM4j处理XML和log4j记录日志的示例代码,通过阅读和运行这些代码,可以更好地理解DOM4j和log4j的使用方法。对于初学者来说,这是一个很好的实践和学习资源。

    dom4j操作XMl例子

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的读取、创建、修改和解析变得简单易行。在本示例中,"dom4jExample.java"是一个Java程序,它展示了如何利用DOM4J库来操作XML文件...

    dom4j配置文件例子

    在这个"dom4j配置文件例子"中,我们将会深入探讨DOM4J的核心概念和如何在实际项目中应用。 首先,DOM4J的主要组件包括Element、Attribute、Document、Namespace等,它们分别代表了XML文档中的元素、属性、文档和...

    dom4j的源文件(dom4j-1.6.1)含例子和jar包

    **DOM4J 源文件详解** DOM4J 是一个非常强大的 Java XML API,它提供了丰富的功能,使得处理 XML 文件变得简单而高效。这个压缩包包含 DOM4J 的源代码、示例以及 jar 包,这对于我们理解其内部工作原理和进行二次...

    dom4j 包含例子 各种增删改查

    "自己写的 dom4j的例子"很显然是个人编写的DOM4J应用实例,可能包含了一些特定场景下的XML处理代码,比如解析配置文件、读写XML数据库等。 总的来说,这个压缩包是学习和实践DOM4J处理XML的理想资源。通过这些示例...

    DOM4j属性的详细介绍及相关的例子

    **DOM4j 知识点详解** DOM4j 是一个灵活且功能强大的Java库,用于处理XML文档。它提供了一套全面的API来操作XML,包括读取、创建、修改和解析XML文档。以下是DOM4j中一些主要接口及其功能的详细解释: 1. **...

    dom4j_例子,包括所有常用用法

    ### DOM4j 示例详解:掌握XML处理的所有常用方法 #### 引言 DOM4j(Document Object Model for Java)是一个Java编程语言中的开源库,用于处理XML文档。它提供了类似于DOM、SAX和JDOM的API,但在性能和功能上往往...

    dom4j的例子,xpp3

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的读取、创建、修改和分析变得简单。XPP3则是一个轻量级的XML解析器,它作为DOM4J的一个可选后端,能够快速高效地解析XML流。在...

    java dom4j 简单示例

    Java DOM4J是一个强大的、灵活的Java库,用于处理XML文档。它提供了全面的API来创建、修改和查询XML文档,使得在Java中操作XML变得简单。在这个“java dom4j 简单示例”中,我们将探讨如何在Spring框架的上下文中,...

    dom4j关于xml读写的例子里面还有dom4j的jar包

    在这个压缩包中,你将找到一个DOM4J用于XML操作的例子,这对于初学者来说是一个很好的学习资源。DOM4J相比Java内置的DOM API更加轻量级,性能更优,而且它的API设计得更加友好,易于理解和使用。 XML(eXtensible ...

Global site tag (gtag.js) - Google Analytics