DOM4J解析

1、DOM4J概述
DOM4J是一个易用的、开源的库,用于XML XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
DOM4J使用起来非常简单。只要了解基本的XML-DOM模型就能使用。DOM4J最大的特色是使用大量的接口,目前对DOM4J的使用越来越广泛。
DOM4J的主要接口都在org.dom4j这个包里面:

→Attribute:定义了XML的属性。
→Branch:为能够包含子节点的节点,如XML元素(Element)和文档(Document)定义了一个公共的行为。
→CDATA:定义了XML CDATA 区域
→CharacterData:是一个标识接口,标识基于字符的节点,如CDATA,Comment和Text。
→Comment:定义了XML注释的行为。

→Document:定义了XML文档。
→DocumentType:定义XML DOCTYPE 声明。
→Element:定义XML元素。
→ElementHandler:定义了Element对象的处理器。
→ElementPath:
→Entity:
→Node:
→NodeFilter:


2、使用DOM4J操作
要使用DOM4J读写XML文档,需要先下载dom4j包,在DOM4J官方网站下载后将相应的包加入工程就dd可以使用了。

DOM4J解析XML的关键操作总结如下:
(1)、Document对象相关

        // 读取XML文件,获取Document对象
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("src\\d0910\\NewFile.xml"));

(2)、节点相关
①获取文档的根元素

        // 获取文档的根元素
        Element root = document.getRootElement();

②取得某个子节点的单个子节点

        // 获取某节点的单个子节点
        Element member1 = root.element("Student");
        Element member11 = member1.element("name");

③取得节点的文字

        // 取得节点name的文本
        String str = member11.getText();

④取得节点下名为“member”的所有子并进行遍历

        // 取得节点下名为“Student”的所有子并进行遍历
        List<Element> nodes = root.elements();// 子节点Student的集合
        System.out.println("学号\t姓名\t\t班级");

        for (Element element : nodes) {
            System.out.print(element.element("id").getText() + "\t");
            System.out.print(element.element("name").getText() + "\t");
            System.out.println(element.element("grade").getText());
            }
        }

⑤在某节点下添加子节点

        // 增加新的节点
        Element newStu = document.getRootElement().addElement("Student");

        Element newName = newStu.addElement("name");
        Element newId = newStu.addElement("id");
        Element newGrade = newStu.addElement("grade");

⑥设置节点文字

        newName.setText("小马哥");
        newId.setText("20156565");
        newGrade.setText("20班");

⑦删除某节点

            // 删除指定节点
            if (element.element("id").getText().equals("20145451")) {
                root.remove(element);
                // element.remove(element.element("name"));
                // element.remove(element.element("id"));
                // element.remove(element.element("grade"));
            }

⑧添加一个CDATA节点。
.......


(3)、属性相关
①取得属性对象

            Attribute a=element.attribute("id");

②取得属性的文本

            Attribute a=element.attribute("id");

            String str=a.getText();
或者:
            String str=element.attributeValue("id");

③设置某节点的属性和文本

            Element newId = newStu.addAttribute("id", "20145450");

④设置属性的文本

            Attribute a=element.attribute("id");
            a.setText("123456");

⑤删除某属性

            Attribute a=element.attribute("id");
            element.remove(a);

(4)、将文档写入XML文件
①文档中全为英文,不设置编码格式,直接写入。

        XMLWriter s = new XMLWriter(new FileOutputStream("src\\d0911\\NewFile.xml"));
        s.write(document);
        s.close();


②文档中含有中文,设置编码格式再写入。

        OutputFormat o=OutputFormat.createPrettyPrint();
        o.setEncoding("UTF-8");
        XMLWriter s = new XMLWriter(new FileOutputStream("src\\d0911\\NewFile.xml"),o);
        s.write(document);
        s.close();


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值