Dom4j解析XML文档

Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.


测试文档 students.xml
<?xml version="1.0" encoding="GBK"?>
<students class="一班" count="3">
    <student>
        <name>小明</name>
        <age>10</age>
    </student>
    <student position="班长">
        <name>小汪</name>
        <age>11</age>
    </student>
    <student>
        <name>小兵</name>
        <age>12</age>
    </student>
</students>

  • 创建XMLFile对象,创建SAXReader对象,获取document根节点
public void paserXML(){

        try {

            /*创建SAXReader读取器,用来读取XML文档*/
            SAXReader sax = new SAXReader();
            /*创建XMLFile对象*/
            File xmlFile = new File("students.xml");

            /*通过file对象来读取XML文档*/
            Document document = sax.read(xmlFile);
            /*获得根节点*/
            Element rootele = document.getRootElement();
            /*从根节点开始遍历所有节点*/
            this.getNodes(rootele);
        } catch (DocumentException e) {
            System.err.println("文档没有节点...");
        } 
    }

  • 从根节点开始递归遍历所有节点
private void getNodes(Element ele) {
        // TODO Auto-generated method stub
        System.out.println("------------------------------------------------");

        /*当前节点的名称、文本内容和属性值*/
        System.out.println("节点名称: " + ele.getName());
        if(ele.getTextTrim().isEmpty()){
            System.out.println("节点没有内容...");
        }else{
            System.out.println("节点的内容:" + ele.getTextTrim());
        }       

        /*当前节点的所有属性存放到list中*/
        List<Attribute> listAttr = ele.attributes();

        /*遍历当前节点的所有属性*/
        for(Attribute attr : listAttr){
            String name = attr.getName();
            String value = attr.getValue();
            System.out.println("属性名称: " + name + "  属性值: " + value);
        }

        /*递归遍历当前节点的所有子节点*/
        List<Element> listele = ele.elements();
        for(Element e : listele){
            /*递归*/
            this.getNodes(e);
        }
    }

  • 解析结果
------------------------------------------------
当前节点名称: students
当前节点没有内容...
属性名称: class     属性值: 一班
属性名称: count     属性值: 3
------------------------------------------------
当前节点名称: student
当前节点没有内容...
------------------------------------------------
当前节点名称: name
当前节点的内容:小明
------------------------------------------------
当前节点名称: age
当前节点的内容:10
------------------------------------------------
当前节点名称: student
当前节点没有内容...
属性名称: position  属性值: 班长
------------------------------------------------
当前节点名称: name
当前节点的内容:小汪
------------------------------------------------
当前节点名称: age
当前节点的内容:11
------------------------------------------------
当前节点名称: student
当前节点没有内容...
------------------------------------------------
当前节点名称: name
当前节点的内容:小兵
------------------------------------------------
当前节点名称: age
当前节点的内容:12

  • 写在后面
    dom4j合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值