1. dom4j概述

解析DOM4J是一个开源XML解析包,采用了Java集合框架并完全支持DOM,SAX和JAXP。最大的特色是使用了大量的接口,主要接口都在org.dom4j里定义。

2. dom4j的使用

2.1 Doucment相关用法

2.11 解析XML文件,获得Document对象

SAXReader reader = new SAXReader();
Document   document = reader.read(new File("input.xml"));

2.12 解析字符串,获得Document对象

 String text = "<members></members>";Document document = DocumentHelper.parseText(text);

2.13 无脑自建Document对象

Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 创建根节点

2.2 节点相关用法

2.21 获得文档根节点

 Element rootElm = document.getRootElement();

2.22 获得某个节点下的指定子节点

Element memberElm = root.element("member");// "member"是节点名 root为某个节点

2.23 获得节点下的文字

String text = memberElm.getText();
String text = root.elementText("name");

2.24 遍历取得某节点下名为member的所有子节点

List nodes = rootElm.elements("member");
for (Iterator it = nodes.iterator(); it.hasNext();) {Element elm = (Element) it.next();// do something
}

2.25 遍历取得某节点下的所有子节点

 for (Iterator it = root.elementIterator();it.hasNext();){Element element = (Element) it.next();// do something}

2.26 A节点下 Add/Delete B节点

Element B = A.addElement("age");
A.remove(B);

2.27 在根节点下添加一个CDATA节点

Element contentElm = root.addElement("content");
contentElm.addCDATA("Hello");// 特别说明:获取节点的CDATA值与获取节点的值是一个方法
System.out.println("contentElm.getText() " + contentElm.getText());

2.3 属性相关用法

2.31 取得根节点下的某属性

Element root=document.getRootElement();
Attribute attribute=root.attribute("size");// 属性名name

2.32 取得/设置为(Set)上面该属性的文字

String text=attribute.getText();

2.33 遍历根节点下的所有属性

  Element root=document.getRootElement();    for(Iterator it=root.attributeIterator();it.hasNext();){Attribute attribute = (Attribute) it.next();String text=attribute.getText();System.out.println(text);}

2.34 设置某个节点的属性和文字

element.addAttribute("name", "sitinspring");

2.35 为某节点添加和删除属性

// 新建student.xml文件并新增内容
Document document = DocumentHelper.createDocument();
Element root = document.addElement("学生信息");
Element student = root.addElement("学生");
student.addAttribute("sid", "001");
Attribute attribute = <span style="font-family: 微软雅黑, sans-serif;">student</span>.attribute("sid");// 属性名name
<span style="font-family: 微软雅黑, sans-serif;">student</span><span style="font-family: 微软雅黑, sans-serif;">.remove(attribute);</span>

2.4 文档最后写入MXL文件

OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");    // 指定XML编码
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);
writer.write(document);
writer.close();

2.5 字符串与XML的转换

2.51  字符串 To XML

String text = "<members> <member>sitinspring</member> </members>";
Document document = DocumentHelper.parseText(text);

2.52  XML To 字符串

SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
Element root = document.getRootElement();
String docXmlText = document.asXML();
String rootXmlText= root.asXML();
Element memberElm = root.element("member");
String memberXmlText = memberElm.asXML();

2.6 格式化转义字符问题请查看这篇链接文。

3. 最后一个简单的小例子,看看注释和输出结果,很容易理解。就不多解释了。

程序连续运行两次输出结果如下:

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class XML{public static void main(String[] args) {try {XMLWriter writer = null;// 声明写XML的对象SAXReader reader = new SAXReader();OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("GBK");// 设置XML文件的编码格式String filePath = "d:\\student.xml";//文件路径File file = new File(filePath);if (file.exists()) {Document document = reader.read(file);// 读取XML文件Element root = document.getRootElement();// 得到根节点boolean add_new = false;for (Iterator i = root.elementIterator(); i.hasNext();) {Element student = (Element) i.next();if (student.attributeValue("sid").equals("001")) {//获取并修改学生sid=001的学生信息Element info_num = student.element("编号");System.out.println("sid为001的该属性名为 - " + info_num.getName());System.out.println("sid为001的该属性值为 - " + info_num.getText());Element info_name = student.element("姓名");System.out.println("sid为001的该属性名为 - " + info_name.getName());System.out.println("sid为001的该属性值为 - " + info_name.getText());info_name.setName("外号");info_name.setText("余小二");System.out.println("sid为001的同学新属性名为 - " + info_name.getName());System.out.println("sid为001的同学新属性值为 - " + info_name.getText());writer = new XMLWriter(new FileWriter(filePath), format);writer.write(document);writer.close();add_new = true;break;}}if (add_new) {// 添加一个学生信息Element student = root.addElement("学生");student.addAttribute("sid", "100");Element sid = student.addElement("编号");sid.setText("100");Element name = student.addElement("姓名");name.setText("老大");Element sex = student.addElement("性别");sex.setText("男");Element age = student.addElement("年龄");age.setText("40");writer = new XMLWriter(new FileWriter(filePath), format);writer.write(document);writer.close();}} else {// 新建student.xml文件并新增内容Document document = DocumentHelper.createDocument();Element root = document.addElement("学生信息");Element student = root.addElement("学生");student.addAttribute("sid", "001");Element id = student.addElement("编号");id.setText("001");Element name = student.addElement("姓名");name.setText("寂寞");Element age = student.addElement("年龄");age.setText("18");writer = new XMLWriter(new FileWriter(file), format);writer.write(document);writer.close();}System.out.println("操作结束! ");} catch (Exception e) {e.printStackTrace();}
}

Java实现——Dom4j读写XML文件相关推荐

  1. dom4j读写xml文件

    dom4j读写xml文件 首先我们给出一段示例程序: import java.io.File; import java.io.FileWriter; import java.util.Iterator ...

  2. Java中DOM4J解析xml文件浅析

      DOM4J解析它是JDOM的一种智能分支.它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持.XML Schema支持以及用于大文档或流化文档的基于事件的处理.它还提供了构建文档表 ...

  3. java项目——Dom4j读取XML文件保存orecal数据库

    上一篇介绍了如何利用dom4j读取xml文件,连接数据库,换数据库的话直接修改XML文件,使配置更加灵 活,本篇博客主要介绍一下如何将XML文件导入到orecal数据库中. XML在现在的项目中的应用 ...

  4. java dom4j 写xml文件_Java实现——Dom4j读写XML文件

    1. dom4j概述 解析DOM4J是一个开源XML解析包,采用了Java集合框架并完全支持DOM,SAX和JAXP. 最大的特色是使用了大量的接口,主要接口都在org.dom4j里定义. 2. do ...

  5. java项目——Dom4j读取XML文件连接orecal数据库

    Dom4j介绍:           dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集 成了DOM,SAX和JAXP.在国内比较 ...

  6. java使用DOM4j解析XML文件

    1.简介 dom4j是java中的XML API,性能优异.功能强大.开放源代码. 也是所有解析XML文件方法中最常用的! 2.代码实操 准备需要j的ar包添加到lib目录下,dom4j-2.1.1. ...

  7. dom4j的读写XML文件

    java用dom4j读写xml很方便,工作之余,做了一点小总结.xml文件格式如下: <?xml version="1.0" encoding="UTF-8&quo ...

  8. java dom读写xml文件_java通过dom读写xml文件

    java通过dom读写xml文件 要读的xml文件 encoding="GB2312"?> "男"> 李华姓名> 14年龄> 学生> ...

  9. Java读写xml文件操作(3W)what why how where

    一. what 1.xml是一种可扩展的标记语言. 2.标记语言:是一种通过标签来描述数据的一门语言. 3.可扩展:标签的名字可以自己定义. 4.可以说xml文件是由标签组成,而标签是可以自定义的. ...

最新文章

  1. 使用Java语言从零开始创建区块链
  2. 【OpenCV3】cv::Mat中最值和均值的求解
  3. Acwing第 30 场周赛【完结】
  4. 使用 Cuttlefish 虚拟 Android 设备
  5. 《Agile Impressions》作者问答录
  6. UTF-8 Everywhere
  7. python全栈还是大数据好_青岛PYTHON全栈应用开发班
  8. seata xid是什么_Spring Cloud Alibaba分布式事务解决框架Seata概念入门篇
  9. 详版大数据报告_《2018抖音大数据报告》完整版,赶快收藏!
  10. c语言求最小公约数和最小公倍数,c语言求最大公约数和最小公倍数
  11. 根据市场需求和反馈调整产品定位,调整产品既定设计策略和营销策略
  12. ciscotftp服务器(ciscotftp服务器下载)
  13. App Inventor探索
  14. 用Python写了一个图像文字识别OCR工具
  15. 《C程序设计》谭浩强
  16. 《springboot和mybatis项目使用枚举转换器出现No enum constant及解决方法》
  17. stm32+esp8266 GET请求心知天气的简单方法
  18. 2020-06-03 Javase 常用api
  19. 百条网络工程师基础面试题(不断更新)
  20. python爬虫百度安全验证_爬虫黑科技-绕开百度人机验证

热门文章

  1. 记一次触发器定义者不同导致的sql异常TRIGGER command denied to user 'XXX' @'%' for table '...
  2. 使用MicrobiomeAnalyst统计和功能分析微生物组数据
  3. Firefox支持Websocket
  4. 为什么和平精英一直显示无法连接到服务器,和平精英无法连接到服务器解决办法...
  5. Padavan 路由器的入门级技巧
  6. python爬取网页表格数据匹配_爬取表格类网站数据并保存为excel文件
  7. 跟卖亚马逊跨境电子商务ERP
  8. 虚幻4游戏开发_3_创建与继承材质
  9. QCA-WIFI如何编译IPQ8074代码
  10. android百度地图API 骑行,步行导航的DEMO以及途径点问题