使用Dom4J解析XML文件

使用Dom4J解析XML文件

1.简介

DOM4J简介

DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。
DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。

Dom:把整个文档作为一个对象。
DOM4J 最大的特色是使用大量的接口。它的主要接口都在org.dom4j里面定义:
Attribute–定义了 XML 的属性。
Branch—-指能够包含子节点的节点。如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为

CDATA

定义了 XML CDATA 区域

CharacterData

是一个标识接口,标识基于字符的节点。如CDATA,Comment, Text.

Comment

定义了 XML 注释的行为

Document

定义了XML 文档

DocumentType

定义 XML DOCTYPE 声明

Element

定义XML 元素

ElementHandler

定义了Element 对象的处理器

ElementPath

被 ElementHandler 使用,用于取得当前正在处理的路径层次信息

Entity

定义 XML entity

Node

为dom4j中所有的XML节点定义了多态行为

NodeFilter

定义了在dom4j 节点中产生的一个滤镜或谓词的行为(predicate)

ProcessingInstruction

定义 XML 处理指令

Text

定义 XML 文本节点

Visitor

用于实现 Visitor模式

XPath

在分析一个字符串后会提供一个 XPath 表达式

接口之间的继承关系如下:

interface java.lang.Cloneable

interface org.dom4j.Node

       interface org.dom4j.Attribute

       interface org.dom4j.Branch

              interface org.dom4j.Document

              interface org.dom4j.Element

       interface org.dom4j.CharacterData

              interface org.dom4j.CDATA

              interface org.dom4j.Comment

              interface org.dom4j.Text

       interface org.dom4j.DocumentType

       interface org.dom4j.Entity

       interface org.dom4j.ProcessingInstruction

2、XML文档操作1

  1. 使用的Jar包
    dom4j-1.6.1.jar
    jaxen-1.1-beta-6.jar

2.建立一篇xml文档

<?xml version="1.0" encoding="UTF-8" ?>
<class>
    <student telephone="1234567">
        <name>zhang3</name>
        <age>18</age>
        <gender>male</gender>
    </student>
    <student telephone="7654321">
        <name>li4</name>
        <age>24</age>
        <gender>female</gender>
    </student>
    <student telephone="678901">
        <name>wang5</name>
        <age>22</age>
        <gender>male</gender>
    </student>
</class>

3.测试代码

package xml解析;

import java.io.File;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class TestMain {

    public static void main(String[] args) {
        SAXReader sr = new SAXReader();// 使用SAX解析
        System.out.println("**********************************");
        try {
            Document doc = sr.read(new File("person.xml"));
            List elements = doc.selectNodes("//class/student//name");
            for (Object obj : elements) {
                String text = ((Element) obj).getText();
                System.out.println(text);
            }
        System.out.println("**********************************");
            List attrs = doc.selectNodes("//class/student/@telephone");
            for (Object obj : attrs) {
                String text = ((Attribute) obj).getText();
                System.out.println(text);
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值