【Java dom4j 实现解析xml文件】

熟悉dom4j

提示:本次学习的目标和方向
DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。

DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。

Dom:把整个文档作为一个对象。

API操作类:

Document: 表示xml文档信息,是一个树形结构

Eelment: 表示xml的元素结点,提供一些操作其子元素方法的,如文本、属性、名称空间等

Attribute: 表示元素结点中的属性


内容

提示:本次学习的内容
如:导入Jar包

读取xml文档

读写XML文档主要依赖于org.dom4j.io包,有DOMReader和SAXReader两种方式。因为利用了相同的接口,它们的调用方式是一样的。

public static Document load(String filename) {  
    Document document = null;  
    try {  
        SAXReader saxReader = new SAXReader();  
        document = saxReader.read(new File(filename)); // 读取XML文件,获得document对象  
    } catch (Exception ex) {  
        ex.printStackTrace();  
    }  
    return document;  
}  
  
public static Document load(URL url) {  
    Document document = null;  
    try {  
        SAXReader saxReader = new SAXReader();  
        document = saxReader.read(url); // 读取XML文件,获得document对象  
    } catch (Exception ex) {  
        ex.printStackTrace();  
    }  
    return document;  
}  

读取操作①

users.xml:

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user id="u001">
        <name>jack</name>
        <age>22</age>
    </user>
    <user id="u002">
        <name>张三</name>
        <age>20</age>
    </user>
    <user id="u003">
        <name>Rose</name>
        <age>20</age>
    </user>
    <student id="s007">
        <name>王同学</name>
        <age>21</age>
    </student>
</users>

Demo01:

package com.etime21;


import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.List;

public class Demo01 {
    public static void main(String[] args) {
        String separator = File.separator;

        try {
            //get a SAXReader object 获取一个SAXReader对象
            SAXReader reader = new SAXReader();
            //创建一个File类
            File file = new File("D:"+separator+"users.xml");
            //读取xml,返回一个Document对象
            Document read = reader.read(file);
            //得到Element的根节点
            Element root = read.getRootElement();
            String name = root.getName();
            System.out.println(name);
            //遍历子元素
            List<Element> elements = root.elements();
            //增强for循环遍历
            for (Element element : elements) {
                String id = element.attributeValue("id");
                System.out.println(id);
                List<Element> elements1 = element.elements();
                for (Element element1 : elements1) {
                    System.out.println(element1.getTextTrim());
                }
            }
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

读取操作②

package com.etime21;


import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.List;

public class Demo02 {
    public static void main(String[] args) {
        String separator = File.separator;

        try {
            //get a SAXReader object 获取一个SAXReader对象
            SAXReader reader = new SAXReader();
            //创建一个File类
            File file = new File("D:"+separator+"users.xml");
            //读取xml,返回一个Document对象
            Document read = reader.read(file);
            //得到Element的根节点
            Element root = read.getRootElement();
            //按照元素的标签名来得到元素对应的节点集合
            List<Element> user = root.elements("user");
            for (Element element : user) {
                //通过属性名称得到对应的属性值
                System.out.println(element.attributeValue("id"));
                //通过元素标签名获得对应的元素的文本信息
                System.out.println(element.elementText("name"));
                System.out.println(element.elementText("age"));
            }
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值