Dom4j解析XML

来源:互联网 发布:php在线模拟考试系统 编辑:程序博客网 时间:2024/06/02 05:10

XML被设计用来结构化、存储以及传输数据。在项目中使用广泛,那么如何解析XML文件呢?DOM4J是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,让我们一块来看使用Dom4j解析XML的一个实例:

1、jar包引入

本实例用到了dom4j-1.6.1.jar的包

2、XML文件结构

<?xml version="1.0" encoding="UTF-8"?>  <university>  <college category="211"><name>海南大学</name><short>海大</short><startTime>1958</startTime><address>美兰区</address>  </college>    <college category="985">    <name>清华大学</name>    <short>清华</short>    <startTime>1911</startTime>    <address>海淀区</address>    </college></university>

3、java代码

public class xmlParse {          public static void main(String[] args) {           Document doc;//创建Document对象           String file = "src/xml/test.xml";//文件路径           File XMLfile = new File(file);//         File XMLfile = new File(xmlParse.class.getClassLoader().getResource(file).getFile());           SAXReader reader = new SAXReader();//创建SAXReader对象           try {                doc = reader.read(XMLfile);//获取Document对象                Element root = doc.getRootElement();                System.out.println(root.getName());
                for(Iterator<?> i = root.elementIterator("college"); i.hasNext();){                     Element cont = (Element) i.next();                     System.out.println("类别:"+cont.attributeValue("category"));                     System.out.println("学校名称:"+cont.elementText("name"));                     System.out.println("简称:"+cont.elementText("short"));                     System.out.println("创办时间:"+cont.elementText("startTime"));                     System.out.println("地址:"+cont.elementText("address")+"\r\n");                }           } catch (Exception e) {                // TODO: handle exception                e.printStackTrace();           }     }}
以上就是使用Dom4j解析XML的过程。

其他几种解析XML文件的方式总结:

1、DOM方式
DOM全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。
DOM方式为 XML 文档的解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。

优点:随机访问;支持删除、修改、重新排列等多种功能

缺点:当文档比较大或者结构比较复杂时,对内存的需求比较高

使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足

2、SAX方式
SAX的全称是Simple APIs for XML,也即XML简单应用程序接口。与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式。SAX解析采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。
由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。

优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码少

缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素

使用场合:只需XML文档的少量内容,很少回头访问;机器内存少

3、JDOM生成和解析XML  
为减少DOM、SAX的编码量,出现了JDOM,它简化与XML的交互并且比使用DOM实现更快。JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。JDOM自身不包含解析器。它通常使用SAX解析器来解析和验证输入XML文档。它包含一些转换器以将JDOM表示输出成SAX事件流、DOM模型或XML文本文档。

优点:极大减少了代码量

使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用了SAX、DOM文档 





1 0