`
v5qqbrowser
  • 浏览: 356868 次
文章分类
社区版块
存档分类
最新评论

Xml文件读取与配置文件解析方法比较

 
阅读更多

在j2ee的世界中,配置文件是不可或缺的组成部分。对于绝大多数应用和框架来讲,最常用的配置文件的格式是xml。那么,在java中是如何读取和解析这些配置文件呢?

java操作xml文件的方式有多种,如jDom,Dom4j和jaxp等。在本文中,关于jaxp的背景和来历在本文中将不做过多复述,只是介绍jaxp读取xml的方法。

jaxp读取xml的代码实现是基于工厂模式,首先需要创建能够生成DocumentBuilder的工厂:DocumentBuilderFactory,可以通过为这个factory设置属性来控制生成的DocumentBuilder的特性和行为。有了DocumentBuilder,就可以读取xml文件,构建Document对象了。

具体的实例代码如下:

在读取xml文件之前,可以setValidating方法来指定是否对xml进行验证,如果不满足格式的xml可以不执行读取操作。比较常用的xml的格式验证方法有两种:DTD和schema。默认情况下,jaxp会使用DTD来验证xml文档,如果需要使用schema来验证,那么需要这行语句:factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");

现在存在这样一个问题,xml的验证文件如何读取?即程序是如何定位到DTD或者是schema文件呢?答案在EntityResolver。可以通过实现这个借口来指明如何加载验证文件。下面是一个实例代码

实现了EntityResolver后,可以通过setEntityResolver方法来将其传递给builder。这样,builder就能够取得验证文件,先执行验证,通过验证后执行解析。

通过以上的一系列代码,取得了Document对象,这是xml文件的对象表示,那么如何解析这个Document对象呢?下面来分别看一下ibatis和spring是如何处理的。

首先来看一下ibatis,它解析Document的方法是基于策略模式,对于不同的xpath节点,有不同的解析方法。程序默认注册若干个解析策略,当程序读取xml后,遍历xml节点时,根据节点的xpath来取得相应的解析策略进行解析和处理。下面看一下ibatis解析节点的策略接口:

接口中的process方法的Node参数即为当前需要解析的节点,接口的实现中只需要关注当前节点的解析即可。

在Spring中,并没有采用ibatis这种策略模式来解析,而是在遍历document时直接进行解析,究其原因是spring的xml节点配置比较灵活,节点的嵌套方式也是多种多样,因此不能够像ibatis那样通过xpath来选择解析策略。

这两个框架解析xml的方式各不相同,但各自有各自的优点。ibatis解析xml的思路非常清晰,而且对于每个xml节点的解析方式都是一目了然的。但这种解析方式只能适合于xpath不多的情况,如果有过多的xpath需要解析,那么这种方式就不合适了。而spring的解析方式比较灵活,而且也容易扩展,缺点在于节点的解析过程与document的遍历过程融合在一起,不能够很清晰的看到整个xml解析的全貌。

分享到:
评论

相关推荐

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 教程 带源码

    JAVA高手解析XML配置文件的读取操作.pdf

    JAVA高手解析XML配置文件的读取操作.pdf

    XML解析工具

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...

    基于MFC的XML文档读写操作

    这是一个基于MFC的XML文档的读写封装类,利用了tinyXML的解析器进行解析,然后处理解析树,并将信息封装到了具体实例中,实现了对XML文档的读写操作。 如果对XML读写有疑惑可以下下来看一看~相信会有帮助

    JAVA高手解析XML配置文件的读取操作.doc

    JAVA高手解析XML配置文件的读取操作.doc

    读取properties、xml格式的配置文件的实例

    这是一个简单实现读取properties、xml格式的配置文件的小案例。虽然实际项目中可能不是这样实现的。作为了解也是不错的。 一、读取properties类型文件 方法一:java.util.ResourceBundle读取properties类型文件; ...

    Dom4j解析配置文件与xml小例子

    Dom4j解析xml与配置文件的小例子,简单的Dom4j的小应用。

    C++ 使用TinyXML解析XML文件 源码

    C++ 使用TinyXML解析XML文件,简单清晰,仅供参考。读取和设置xml配置文件是最常用的操作,TinyXML是一个开源的解析XML的C++解析库

    J2EE中XML配置文件的读取处理

    使用XML作为Java的配置文件有很多好处,从Tomcat的安装配置文件和J2ee的配置文件中,我们已经看到XML的普遍应用,让我们也跟随流行趋势用XML武装起来。有好几种XML解析器:主要有DOM和SAX,在apache的XML项目组中,...

    flex 解析xml文件 httpservice

    flex 解析xml文件,利用httpservice读取xml文件,按要求过滤字符串,获取对应的值

    Matlab解析XML文件.rar

    XML格式的问题现在很流行,它往往用作数据存储文件,或者是参数配置文件,我们需要做的有两件事情,从XML文件读取数据,以及把数据储存到XML文件中去。 Matlab使用JAVA虚拟机来处理XML文件,默认给出了三个用于处理...

    Java解析XML工具类--(java源码)

    * 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...

    C# 读取文件名构造XML文件并生成Tree

    该文件是一个通过算法,读取一个文件夹中的文件名,对文件名处理生成XML文件,在根据XML文件绑定到树。点击树的叶子节点,会显示相应文件图片!

    xml.rar_Qt配置功能_qt xml_qt读取xml_qt读取xml文件

    此程序实现的功能:利用QT库提供的DOM方式来读取和解析数字化保护装置的XML格式的配置文件。

    android读写xml文件

    android中读写xml文件简单demo,可以通过此代码来简单的读取xml配置文件

    xml序列化解析与保存可直接应用于项目中(C#源码)

    xml序列化解析与保存可直接应用于项目中(C#源码) 读取xml文件并解析将解析的结果保存至定义类的对象中; 保存,是将该对象的内容保存至xml配置文件中;

    开源xml解析库TingXml。

    目前,对xml的使用非常广泛,读取和设置xml配置文件是我们最常用的操作。常见C/C++ XML解析器有Tinyxml、XERCES、squashxml、xmlite、pugxml、libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的。 ...

    JAVA高手解析XML配置文件的读取操作

    Java和XML是黄金组合,网上已经有很多文章介绍,XML作为电子商务中数据交换,已经有其不可替代的作用,但是在平时系统开发中,我们不一定都用到数据交换,是不是无法使用XML了?

    xml、json配置文件的读取与批量互转

    1、轻量级的库不超100k,可以用于主流的3大配置文件读取或者批量互转; 2、调用非常方便所见即所得,无需在你的代码里面依不同的文件结构、内容写繁杂的代码做配置类的容器空间,懂c#的应该知道这大概可以为你的开发...

Global site tag (gtag.js) - Google Analytics