DOM4J入门

原创 2016年08月31日 13:00:43

看了这么多的博客,对这个DOM4J还是不太清楚,于是不得不动手记一下笔记,如果哪里有错的还请提出来,共同进步。
如果使用DOM4J应该先导入必要的包,下载地址:
http://download.csdn.net/detail/chaogu94/9617730
最近分不太够了,如果从这篇博客学到东西的朋友权当打赏一下了,要是没有分数的兄弟需要的话也可以留言联系我,看到后肯定也会发你一份。


Demo1:
xml文件:users.xml

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user id="1">
        <username>张三</username>
        <password>123</password>
    </user>
    <user id="2">
        <username>李四</username>
        <password>321</password>
    </user>
</users>

java代码:

public class Dom4JTest2 {

    public static void main(String[] args) throws DocumentException {
        // 创建SAXReader对象为了创建document对象
        SAXReader reader = new SAXReader();
        // 创建document对象
        Document document = reader.read("users.xml");
        // 创建根节点
        Element root = document.getRootElement();
        // System.out.println(root.getName());//得到当前节点的节点名
        // 获取根节点下所有名为user的节点
        List<Element> elements = root.elements("user");
        // 遍历出所有子节点
        for (Element element : elements) {
            // System.err.println(element.getName());
            // 得到当前节点下的属性
            System.out.println(element.attributeValue("id"));
            // 获得当前节点下的子节点的元素的文本值
            System.out.println("username:" + element.elementText("username")
                    + " password:" + element.elementText("password"));
        }
    }
}

Demo2:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Dom4JTest2 {

    public static void main(String[] args) {
        XMLWriter writer = null;
        // 首先使用DocumentHelper创建Document对象
        Document document = DocumentHelper.createDocument();
        // 创建根节点
        Element root = document.addElement("users");
        // 为根节点添加子元素
        Element user1Element = root.addElement("user");
        Element user2Element = root.addElement("user");
        // 为子元素添加属性
        user1Element.addAttribute("id", "1");
        user2Element.addAttribute("id", "2");
        // 为子元素添加子节点及文本
        user1Element.addElement("username").addText("zhangsan");
        user1Element.addElement("password").addText("123");

        user2Element.addElement("username").addText("lisi");
        user2Element.addElement("password").addText("321");

        // 文件保存路径
        String path = "xml/user.xml";
        try {
            // 创建XMLWriter来写数据
            writer = new XMLWriter(new FileWriter(path),
                    OutputFormat.createPrettyPrint());
            // 将节点写到xml文档中
            writer.write(document);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

    }
}

XPath的教程相应的API中有详细教程,我提供的工具里有,在此就不在重复介绍

关于使用XPath的Demo
xml文件

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book id="1">
        <title>图书A</title>
        <author>作者A</author>
        <price>89.00</price>
    </book>
    <book id="2">
        <title>图书B</title>
        <author>作者B</author>
        <price>69.00</price>
    </book>
    <book id="3">
        <title>图书C</title>
        <author>作者C</author>
        <price>29</price>
    </book>
</books>

Java文件

import java.util.List;

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

public class Dom4JTest2 {

    public static void main(String[] args) throws DocumentException {
        SAXReader reader = new SAXReader();
        Document document = reader.read("users.xml");
        Element root = document.getRootElement();
        // 使用xpath来查找xml里的节点
        // 相对路径查找,从当前节点查找子节点book
        List<Element> elements = root.selectNodes("book");
//      System.out.println(elements.size());// 结果为3

        // 使用绝对路径来查找,从根books节点查找book节点(此时不会去查找book下的子节点)
        elements = root.selectNodes("/books/book");
//      System.out.println(elements.size());// 结果为3

        // 根节点不是book,所以无法查找
        elements = root.selectNodes("/book");
//      System.out.println(elements.size() + ":" + elements);

        // 表示从文档中遍历所有满足要求的节点(从根节点开始)不太建议使用,因为效率不高
        elements = root.selectNodes("//title");
//      System.out.println(elements.size() + ":" + elements);   

        // 查找了所有作者为作者B的书
        elements = root.selectNodes("book[author='作者B']");
        for (Element element : elements) {
            //System.out.println("title:"+element.elementText("title"));
        }

        //查找了属性中id大于等于2的书
        elements = root.selectNodes("/books/book[@id>2]");
        for (Element element : elements) {
            //System.out.println("title:"+element.elementText("title"));
        }

        //查找名称中包含有 图书 的price节点
        elements = root.selectNodes("/books/book[contains(title,'图书')]/price");
        for (Element element : elements) {
            //System.out.println(element.getTextTrim());
        }

        //查找名称中包含有图书并且价格小于50的书
        elements = root.selectNodes("/books/book[contains(title,'图书') and price>50]");
        for (Element element : elements) {
            System.out.println(element.elementText("title")+":"+element.elementText("price"));
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

我写的几个dom4j的入门例子.rar

  • 2008年09月09日 22:49
  • 8KB
  • 下载

dom4j入门例子

  • 2008年05月04日 16:27
  • 498KB
  • 下载

Dom4j解析xml文件(入门)

准备依赖的jar包: 需要访问的xml文件 张三 20 111111111111 zhangsan@qq.com 122321111 李四 20 2...

中文 DOM4j入门例子.txt

  • 2013年09月07日 17:29
  • 6KB
  • 下载

dom4j入门资料全.rar

  • 2010年01月10日 21:27
  • 1.61MB
  • 下载

Java解析XML文档dom4J入门案例

dom4J解析XML入门案例 1 ² 为什么有dom4j 1 ² 使用dom4J需要导入的包(记住导包,不然会出错) 2 ² xpath的必要性 2 1) 原理图: 3 ² 一个dom4j的...

Java进阶学习第六天——DOM4J入门

XML约束——schema Schema一些概念 Schema开发步骤 名称空间的概念 使用名称空间引入Schema XML的编程 JAXP的SAX解析 DOM4J的解析 查找标签文本 添加子节点 在...

Dom4j解析XML快速入门

Parsing XML One of the first things you'll probably want to do is to parse an XML document of some k...
  • xh16319
  • xh16319
  • 2012年09月21日 20:41
  • 643

Dom4j 的入门知识

Dom4j 使用简介 作者:冰云 icecloud(AT)sina.com 时间:2003.12.15   版权声明: 本文由冰云完成,首发于CSDN,未经许可,不得使用于任...
  • jimzhai
  • jimzhai
  • 2012年04月28日 22:28
  • 675

dom4j快速入门文档

Parsing XML One of the first things you’ll probably want to do is to parse an XML document of some ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DOM4J入门
举报原因:
原因补充:

(最多只允许输入30个字)