`

利用dom4j解析xml文档

    博客分类:
  • XML
阅读更多
现在xml已异常的流行,所以为了跟上趋势,我也学习使用了xml。
这是我使用dom4j进行解析xml文档的一段代码:(ide工具:myeclipse)

<?xml version="1.0" encoding="utf-8"?>
<resource>
<sql id="one">
   <sql-content>a</sql-content><!-- 这个就是sql/hql语句的内容 -->
   <alias>b</alias><!-- 这个如果是hql语句的列的别名 -->
   <type>c</type><!-- 这个是别名对应的hibernate类型 -->
   <pageSize>d</pageSize><!-- 如果有分页,这个是分页大小 -->
</sql>

<sql id="two">
   <sql-content>x</sql-content><!-- 这个就是sql/hql语句的内容 -->
   <alias>t</alias><!-- 这个如果是hql语句的列的别名 -->
   <type>2</type><!-- 这个是别名对应的hibernate类型 -->
   <pageSize>2</pageSize><!-- 如果有分页,这个是分页大小 -->
</sql>
</resource>

这个是我举例使用的xml文件
import java.io.InputStream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.tax.exception.NullResultException;
/**
* 这里要注意的此xml文档的根会签必须是:resource<br>
* 而此xml文档的根标签只可以为:sql,当然文档中sql的个数不限,可以没有,也可以有多个,而且此标签有一个必须的唯一属性id
* 这里是解析xml文件的内容,最后返回的结果是<sql>内所有的内容,将并它存在map中,标签名是对应的key<br>
* 而key对应的值也就是其标签的内容
* @author 张尊伟
*
*/
public class ParseXML implements Serializable {
private static Document document = null;
private static Element rootElement = null;
private static Map map = new HashMap();

private ParseXML() throws NullResultException {
   SAXReader reader = new SAXReader();
   try {
    InputStream is =ParseXML.class.getResourceAsStream("/resources.xml");
    document = reader.read(is);
    rootElement = document.getRootElement();
   } catch (DocumentException e) {
    throw new NullResultException("提供的资源文件不存在或者解析文件错误!",e);
   }
}

public static ParseXML getInstance() throws NullResultException{
   final String INSTANCE = "com.tax.util.ParseXML";
   ParseXML px = (ParseXML) map.get(INSTANCE);
  
   if(px == null){
    px = new ParseXML();
    map.put(INSTANCE,px);
   }
  
   return px;
}
/**
   * 这里返回dom4j的document对象
   * @return org.dom4j.Document
   */
public Document getDocument() {
   return document;
}
/**
   * 返回引xml文档的根标签
   * @return
   */
public Element getRootElement() {
   return rootElement;
}
/**
   * 这里根据<sql>标签的id属性行到此标签的所有子标签的值<br>
   * 返回的结果是<sql>内所有的内容,将并它存在map中,标签名是对应的key<br>
   * 而key对应的值也就是其标签的内容<br>
   * @param idValue
   * @return
   */
public Map getValue(String idValue){
   Map map = new HashMap();
List list = document.selectNodes("/resource/sql/@id");
   Iterator it = list.iterator();
   while(it.hasNext()){
    Attribute attribute = (Attribute) it.next();
    if(!attribute.getValue().equals(idValue)){
     continue;
    }
   
    Iterator it0 = attribute.getParent().elementIterator();
    Element el = null;
    while(it0.hasNext()){
     el = (Element) it0.next();
     map.put(el.getName(),el.getData());
    }
    break;
   }

   return map;
}
/*
public static void main(String []args){
   ParseXML px = null;
   try {
    px = ParseXML.getInstance();
   } catch (NullResultException e) {
    // TODO 自动生成 catch 块
    System.out.println(e.getException().getMessage());
   }
   Map map = px.getValue("one");
   System.out.println(map.get("alias"));
}*/
}
分享到:
评论

相关推荐

    利用 dom4j 解析 xml 文档

    通过学习和实践这些知识,你可以熟练地利用dom4j处理XML文档,无论是简单的数据交换还是复杂的配置文件管理,都能游刃有余。在实际项目中,结合具体需求,灵活运用这些技术,可以大大提高工作效率。

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    dom4j解析xml文件(增删改查)

    在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对DOM4J操作XML的理解。记得实践是检验理论的最好方式,动手操作会让你更好地掌握这些知识...

    dom4j解析xml文件的压缩包

    5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...

    dom4j解析xml,利用反射机制

    在这个项目中,我们利用DOM4J来解析XML文件,并通过Java的反射机制将解析出的信息存储到特定的类中。 首先,我们需要了解XML的基本概念。XML(Extensible Markup Language)是一种标记语言,常用于数据交换和结构化...

    dom4j解析xml文件代码示例

    在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...

    dom4j 解析写入xml

    1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件

    利用Dom4j生成XML和解析XML

    在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j 生成 XML 文档非常简单。首先,我们需要创建一个 Document 对象,然后添加元素和属性。下面是一个生成 XML 文档的...

    java dom4j解析xml

    Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...

    分别使用DOM和DOM4j解析XML文件

    使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory创建DocumentBuilder实例。 3. 使用DocumentBuilder的parse()方法解析XML文件,得到Document对象。 4. 通过...

    dom4j解析xml实例

    **DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...

    DOM4J 解析XML

    **DOM4J解析XML** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效且功能丰富的API,使得XML的读取、创建、修改和查询变得简单易行。DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与...

    dom4j解析XML文档.ppt

    DOM4J是一个强大的Java库,专门用于解析XML文档。它提供了简单易用的API,使得开发者可以更加方便地处理XML数据。DOM4J的核心优势在于它的面向接口编程设计,这使得它能够在不同的解析机制间灵活切换,如DOM、SAX和...

    dom4j解析xml

    2. **解析XML文档**: - 使用`Document`对象及其子类提供的方法来查询和修改XML文档。 - 主要通过XPath表达式来定位XML文档中的特定节点或元素。 3. **输出XML文档**: - 将修改后的`Document`对象写回到XML文件...

    用dom4j解析xml文件

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

    dom4j解析XML所需jar包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于DOM(Document Object Model)和Java的结合,但它的设计理念比标准DOM更先进...

    dom4j 解析xml实例

    在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...

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

    要开始解析XML文件,首先需要导入DOM4J的相关包: ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; ``` 接下来,我们将创建...

Global site tag (gtag.js) - Google Analytics