热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

dom4j读取XML文件详解

这篇文章主要为大家详细介绍了dom4j读取XML文件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,现在越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包。

上面说dom4j这么优秀,那么好用,那么从今天开始就跟大家一起分享dom4j的一些用法。

dom4j的主要接口都在org.dom4j这个包里定义:


要想弄懂这套接口,关键的是要明白接口的继承关系:

读写XML文档主要依赖于org.dom4j.io包,其中提供DOMReader和SAXReader两类不同方式,而调用方式是一样的。这就是依靠接口的好处。

// 从文件读取XML,输入文件名,返回XML文档 
public Document read(String fileName) throws MalformedURLException, DocumentException { 
  SAXReader reader = new SAXReader(); 
  Document document = reader.read(new File(fileName)); 
  return document; 
} 

reader的read方法是重载的,可以通过InputStream, File, Url等不同的参数来读取。得到的Document对象就带表了整个XML。
根据本人自己的经验,读取的字符编码是按照XML文件头定义的编码来转换。如果遇到乱码问题,注意要把各处的编码名称保持一致即可。

下面这个例子是SAXReader类通过InputStream读取xml文件:

所要读取的xml文件:

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
 
  
  oracle.jdbc.driver.OracleDriver 
  jdbc:oracle:thin:@localhost:1522:mydb 
  drp 
  drp 
  
 

读取xml文件的类:

package com.util; 
 
import java.io.InputStream; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
 
import org.dom4j.Document; 
import org.dom4j.DocumentException; 
import org.dom4j.Element; 
import org.dom4j.io.SAXReader; 
 
/** 
 * 解析sys-config.xml文件 
 * @author Ronaldinho 
 * 
 */ 
 
public class XmlConfigReader { 
  
 //懒汉式 
 private static XmlConfigReader instance = null; 
  
 //保存jdbc相关信息 
 private JdbcConfig jdbcCOnfig= new JdbcConfig(); 
  
 private XmlConfigReader() { 
 
  //建立一个SAXReader对象 
  SAXReader reader=new SAXReader(); 
 
  //通过当前线程的类加载器,获得文件的相对路径,读入缓冲输入流 
  InputStream in=Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml"); 
  try { 
   //通过流来读取xml文件 
   Document doc=reader.read(in); 
    
   //读取jdbc相关信息 
   Element driverNameElt=(Element) doc.selectObject("/config/db-info/driver-name"); 
   Element urlElt=(Element) doc.selectObject("/config/db-info/url"); 
   Element userNameElt=(Element) doc.selectObject("/config/db-info/user-name"); 
   Element passwordElt=(Element) doc.selectObject("/config/db-info/password"); 
    
   //设置jdbc相关信息 
   jdbcConfig.setDrivername(driverNameElt.getStringValue()); 
   jdbcConfig.setUrl(urlElt.getStringValue()); 
   jdbcConfig.setUsername(userNameElt.getStringValue()); 
   jdbcConfig.setPassword(passwordElt.getStringValue()); 
 
  } catch (DocumentException e) { 
   e.printStackTrace(); 
  } 
 } 
  
 public static synchronized XmlConfigReader getInstance() { 
  if (instance==null) { 
   instance = new XmlConfigReader(); 
  } 
  return instance; 
 } 
} 

上面这种方式是通过单例模式生成一个对象,这个对象实例化一个SAXReader,然后将xml文件加载到流当中。再通过SAXReader的read()方法将其转换成一个document对象。然后通过这个document对象取到xml文件的节点的值。

今天就先简单介绍一下利用dom4j读取xml文件,后面会陆续跟大家说说其他的用法。大家不要着急哦。

PS:欢迎各位批评指正!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • RedHat 系统下配置国内 YUM 源以替代官方收费源的方法
    本文详细介绍如何在 RedHat Linux 中安装并配置 YUM 包管理器,并通过使用国内镜像源来解决因未购买官方服务而导致的更新源限制问题。 ... [详细]
  • Eclipse 中 JSP 开发环境配置指南
    本文详细介绍了如何在 Eclipse 集成开发环境中配置 JSP 运行环境,包括必要的软件下载、Tomcat 服务器的配置以及常见问题的解决方法。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • 本文详细介绍了如何在Android应用中使用GridView组件以网格形式展示数据(如文本和图像)。通过行列布局,实现类似矩阵的数据展示效果。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 详细指南:使用IntelliJ IDEA构建多模块Maven项目
    本文在前两篇文章的基础上,进一步指导读者如何在IntelliJ IDEA中创建和配置多模块Maven项目。通过详细的步骤说明,帮助读者掌握项目模块化管理的方法。 ... [详细]
  • PHP 中 preg_match 函数的 isU 修饰符详解
    本文详细解析 PHP 中 preg_match 函数中 isU 修饰符的具体含义及其应用场景,帮助开发者更好地理解和使用正则表达式。 ... [详细]
  • 在使用Maven进行项目构建时,由于依赖库的下载速度慢常常让人感到沮丧,这直接影响了开发效率和学习热情。幸运的是,阿里云提供了一个快速的国内镜像服务,能够显著提升Maven项目的构建速度。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • 在使用Maven构建多模块项目时,执行`nvm clean install`命令可能会遇到子模块路径配置错误的问题,导致提示‘pom.xml does not exist’的错误信息。 ... [详细]
  • 本文介绍了一种在Win10 UWP应用中实现根据数值动态改变颜色的控件的方法。通过将椭圆的颜色与整数绑定,并利用值转换器来实现颜色的渐变效果。 ... [详细]
  • Android中实现复合旋转动画效果
    本文将探讨如何在Android应用中实现动态且吸引人的旋转动画。通过结合多种动画类型,如透明度变化、旋转、缩放和位移,可以创造出更为复杂的视觉效果。我们将从XML布局和Java代码两个方面进行详细介绍。 ... [详细]
  • MapReduce原理是怎么剖析的
    这期内容当中小编将会给大家带来有关MapReduce原理是怎么剖析的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 ... [详细]
  • Android商城应用开发指南(第二部分):创建启动欢迎页
    大多数商城应用程序在启动时会显示一个欢迎页面,以提升用户体验。本文将指导您如何实现一个基本的欢迎页,该页面会在用户打开应用后短暂展示,随后自动跳转至主界面。 ... [详细]
author-avatar
唤起
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有