Dom4j解析XML

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值