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 blocke.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 blocke.printStackTrace();
}

生成books.xml如下:

<?xml version="1.0" encoding="gbk"?><bookstore><book id="1001"><name>java编程思想</name></book>
</bookstore>

created by 李晓晴

DOM4J读取和写入XML文件相关推荐

  1. MFCXTP库读取和写入XML文件

    注:XTP库文件可以在网上下载,然后引用到所写的程序中 1.XML示范文件 //示例文件 <?xml version="1.0" encoding="UTF-8&q ...

  2. DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)...

    Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM开发的.与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了 ...

  3. python将数据写入xml文件_python读取/创建XML文件

    Python中定义了很多处理XML的函数,如xml.dom,它会在处理文件之前,将根据xml文件构建的树状数据存在内存.还有xml.sax,它实现了SAX API,这个模块牺牲了便捷性,换取了速度和减 ...

  4. 使用DOM4J读取和维护XML数据

    笔记目录: 1.了解XML解析 2.使用DOM读取和维护XML数据 3.使用DOM4J读取和维护XML数据 1.DOM4J介绍 2. DOM4J读写机制 3. DOM4J常用API DOM4J的主要接 ...

  5. Java:使用DOM4j来实现读写XML文件中的属性和元素

    DOM4可以读取和添加XML文件的属性或者元素 读取属性: public static void ReadAttributes() throws DocumentException {File fil ...

  6. python读取txt文件写入-python 读取、写入txt文件的示例

    写入文件 使用open()函数和write()函数 但是有两种写法,分别是'a'和'w' 'a' 表示写入文件 若无该文件会直接创建一个 如果存在这个文件,会接着已有的内容的后面写入 with ope ...

  7. python输出csv文件-Python之读取与写入CSV文件

    原标题:Python之读取与写入CSV文件 本文作者:闫续文 文字编辑:张梦婷 技术总编:张学人 有问题,不要怕!访问 CSV(Comma-Separated Values)格式是电子表格和数据库最常 ...

  8. java : enum、创建文件和文件夹、删除文件和文件夹、获得项目绝对路径、写入数据到excel中、java代码中两种路径符号写法、读取、写入text文件...

    java : enum http://www.cnblogs.com/hyl8218/p/5088287.html 创建文件和文件夹.删除文件和文件夹 http://www.cnblogs.com/m ...

  9. c++读取和写入TXT文件的整理

    c++读取和写入TXT文件的整理 #include "stdafx.h" #include <iostream> //无论读写都要包含<fstream>头文 ...

最新文章

  1. git commit -amend_最常见的Git错误都有哪些,如何解决它们?
  2. 3.STM32中对EXTI_PE5_Config()函数的理解(自定义)之中断控制按键LED
  3. 这封信里面,藏了300万数字货币
  4. linux版_巧用linux版powershell,管理linux下的docker
  5. MTK平台APP层 通过INvram获取SN号
  6. c/c++ struct的大小以及sizeof用法
  7. 逆向工程核心原理学习笔记(十二):分析abex' crackme #1
  8. HEVC概念缩写对照表
  9. [转]# python中init和new的区别
  10. 如何在gitee上部署网页
  11. java 字符串池_什么是Java字符串池?
  12. 阿里云服务器如何升级配置和降低配置?
  13. oracle触发器无效且未通过重新验证_更改过程或触发器中的SET选项将导致重新编译...
  14. 第一阶段:Java基础
  15. win10误删的注册表能还原吗_win10电脑注册表修改后如何恢复
  16. [Unity2D]实现人物动画帧的导入以及左右移动
  17. 查看计算机真实用户名(username)
  18. L6470H_电机驱动控制器 L6470HTR_中文规格书
  19. 丘成桐数学竞赛2016
  20. 最强易用性?趣链科技智能合约引擎是怎样炼成的

热门文章

  1. AOC U27N3C 4K显示器使用体验
  2. 实际案例:在现有代码中通过async/await实现并行
  3. android tablelayout 点击,TableLayout中的单击事件的问题
  4. 2023山东玉米加工展,助力乡村振兴·产业融合发展3月在济南召开
  5. C++中虚函数工作原理
  6. java8新特性之Lambda流常用表达式的方法合集
  7. js获取button的id属性
  8. java反射invoke方法的使用
  9. (莫队算法)2038: 小Z的袜子(hose)
  10. 修改服务器3389端口