DOM4J读取和写入XML文件

DOM4J是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能.
DOM4J是JAVA特有的解析方法。需要先导入DOM4J的jar包才能调用对应方法。
dom4j-2.0.2.jar
(一)jar包导入后,我们先来解析book.xml文件读取xml文件中的信息,步骤如下:
1、创建SAXReader对象reader
SAXReader reader = new SAXReader();
2、 通过reader对象的read方法加载book.xml文件,获取document对象
Document document = reader.read(file);
3、 通过document对象获取跟几点bookstore
Element bookStore = document.getRootElement();
4、 通过element对象的elementIterator方法获取迭代器
Iterator it = bookStore.elementIterator();
5、 遍历迭代器,获取根节点的信息
6、 迭代获取element的属性名和属性值
7、 获取element的节点名和节点值
具体代码如下:

SAXReader reader = new SAXReader();
File file = new File("book.xml");
try {
    Document document = reader.read(file);
    Element bookStore = document.getRootElement();
    Iterator<Element> it = bookStore.elementIterator();
    int i = 0;
    while (it.hasNext()) {
        i++;
        System.out.println("=============开始遍历第" + i + "本书==========");
        Element element = it.next();
        List<Attribute> bookAttrs = element.attributes();
        for (Attribute attr : bookAttrs) {
            System.out.println("属性名:" + attr.getName() + "-----属性值:" + attr.getValue());
        }
        Iterator<Element> childNode = element.elementIterator();
        while (childNode.hasNext()) {
            Element child = childNode.next();
            System.out.println("节点名:" + child.getName() + "-----节点值:" + child.getStringValue());
        }   
        System.out.println("=============结束遍历第" + i + "本书==========");
    }
} catch (DocumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

(二)可以往book.xml中写入内容,步骤如下:
1、创建document对象,代表整个xml文档
Document document = DocumentHelper.createDocument();
2、创建根节点bookstore
Element bookstore = document.addElement(“bookstore”);
3、生成子节点及节点下的内容
Element book= bookstore.addElement(“book”);
4、给子节点添加属性
book.addAttribute(“id”, “1001”);
5、设置生成xml格式
OutputFormat format = OutputFormat.createPrettyPrint();
6、生成xml文件
代码如下:

Document document = DocumentHelper.createDocument();
Element rss = document.addElement("bookstore");
Element book= rss.addElement("book");
book.addAttribute("id", "1001");
Element name= book.addElement("name");
name.setText("java编程思想");
OutputFormat format = OutputFormat.createPrettyPrint();
//设置编码格式为gbk,默认utf-8
format.setEncoding("gbk");
try {
    File f = new File("books.xml");
    XMLWriter writer = new XMLWriter(new FileOutputStream(f), format);
    //设置是否转义。默认true,代表转义
    writer.setEscapeText(false);
    writer.write(document);
    writer.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

生成books.xml如下:

<?xml version="1.0" encoding="gbk"?>

<bookstore>
  <book id="1001">
    <name>java编程思想</name>
  </book>
</bookstore>

created by 李晓晴

这里写图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值