dom4j是一个Java的XML API,用来读写XML文件。具有性能优异、功能强大和极其易使用的特点,开放源码。Hibernate也用它来读写配置文件。

SpringBoot项目中如何使用dom4j?

如果项目中已经引入了Sprnig Data JPA的Maven依赖,直接使用即可

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

如果项目没有用到Spring Data JPA,直接输入document找不到org.dom4j.Document,如下

此时需要引入dom4j的Maven依赖,如下:

<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.1</version>
</dependency>

1、解析XML文档

(1)读取XML文件,获取Document对象

String pathname = "文件路径,不能为空。例如,F://test/test.txt";
SAXReader reader = new SAXReader();
Document document = reader.read(new File(pathname));

(2)解析XML形式的文本,得到Document对象

String text = "<root>\r\n" + "  <info>\r\n" + "  <name>Tom</name>\r\n" + "    <age>22</age>\r\n" + "  </info>\r\n" + "</root>";
Document document = DocumentHelper.parseText(text);

(3)创建Document对象

Document document = DocumentHelper.createDocument();
Element element = document.addElement("ROOT");

2、获取Root节点

一切XML分析都是从Root元素开始的。

Element root = document.getRootElement();

3、获取子节点

(1)使用Element org.dom4j.Element.element(String name)和Element org.dom4j.Element.element(String name)

String text = "<root>\r\n" + "  <child>子节点</child>\r\n" + "</root>";
Document document = DocumentHelper.parseText(text);
Element root = document.getRootElement();
Element child = root.element("child");
String childValue = child.getText();

打印childValue如下 :

如果XML文本中没有<child></child>元素,获取到的child为null,此时child.getText()会抛出空指针异常。

如果XML文本中有<child></child>元素,但元素内容为空,此时childValue的值为""。

(2) 使用String org.dom4j.Element.elementText(String name)

String text = "<root>\r\n" + "  <child>子节点</child>\r\n" + "</root>";
Document document = DocumentHelper.parseText(text);
Element root = document.getRootElement();
String childValue = root.elementText("child");

打印childValue如下 :

如果XML文本中没有<child></child>元素,childValue的值为null。如果XML文本中有<child></child>元素,但元素内容为空,此时childValue的值为""。

4、新增一个节点及其子节点与数据

Element child = root.addElement(String arg0);
child.setText(String arg0);

5、遍历XML树

递归方式

public void treeTraversal(){treeTraversal(root);}public void treeTraversal(Element element){for(int i = 0, size = element.nodeCount(); i<size; i++){Node node = element.node(i);if(node instanceof Element){treeTraversal((Element) node);}}}

6、字符串转XML(使用dom4j)

String str=...;Document document = DocumentHelper.parseText(str);

7、XML转字符串(使用dom4j)

Document document = ...;String str = document.asXml();

8、文件输出

(1)将一个Document或者Node通过write方法输出

FileWriter out = new FileWriter(File file);document.write(out);

(2)改变输出格式,用XMLWriter类

public void write(Document document)throws IOException {File file = new File("F://test/test.txt");XMLWriter writer = new XMLWriter(new FileWriter(file));writer.write(document);writer.close();//美化格式OutputFormat format = OutputFormat.createPrettyPrint();writer = new XMLWriter(System.out, format);writer.write(document);//缩减格式format = OutputFormat.createCompactFormat();writer = new XMLWriter(System.out, format);writer.write(document);
}

入参如下:

控制台输出如下:

test.txt文件内容如下

dom4j——解析XML相关推荐

  1. 【学习笔记】关于DOM4J:使用DOM4J解析XML文档

    一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org. ...

  2. Dom4j 解析Xml文档及XPath查询 学习笔记

    本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" -- 在当前浏览器页面,按键 "Ctrl+F" 按键 ...

  3. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  4. 使用dom4j解析XML文件

    为什么80%的码农都做不了架构师?>>>    dom4j是一个java 的XML API,用来读写XML文件. 使用dom4j解析XML文件,首先需要在官网下载dom4j-1.6. ...

  5. Dom4J 解析xml ,类查询

    /*** 从XML文件比对,传入provinceId 返回 provinceShortName * @param provinceid* @return*/public static String p ...

  6. Dom4j 解析Xml文档及 XPath查询 学习笔记

    2019独角兽企业重金招聘Python工程师标准>>> 本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" ...

  7. 使用DOM4J解析XML及采用Schema校验的方法

    使用DOM4J解析XML及采用Schema校验的方法 Validation Currently dom4j does not come with a validation engine. You ar ...

  8. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  9. java解析xml工具类_通过dom4j解析XML字符串XMLDocUtil工具类转换为XML文档及获取指定根节点及指定节点路径内容代码示例...

    一.前言 通过dom4j解析XML文档的XMLDocUtil工具类,进行解析xml字符串为Document文档对象.获取根节点元素路径内容getRootElement.获取唯一路径节点的值getSin ...

  10. Java 使用 Dom4j 解析 XML 指南

    Java 使用 Dom4j 解析 XML 指南 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用 ...

最新文章

  1. 编程语言也有环保排队?垫底的居然是它...
  2. 【涛声依旧】华为的“大服务”
  3. 2020-11-1(xml)
  4. python函数定义错误_[转载]python之函数的使用及异常处理2021.1.30
  5. 图像处理与图像识别笔记(六)图像增强3
  6. oracle进入到root用户,Linux环境中普通用户切换到root用户问题
  7. 翁恺java答案第五周_[JAVA]翁恺老师零基础学java语言第五周素数例题中continue的困惑...
  8. Hibernate与mybatis比较
  9. 利用Google翻译实现网站国际化——js插件
  10. 计算机笔记--【Java设计模式】
  11. 若依开发文档手册[持续更新:拥抱初次使用若依的开发者]
  12. win+e替换为xyplorer打开
  13. python实现微信hook_GitHub - redtips/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...
  14. Mysql 8.0 安装详细教程、问题处理、卸载(亲测可用)
  15. Winform中pictureBox控件SizeMode属性
  16. sd和sem啥区别_SD与SEM有区别吗
  17. 进程和线程最生动的理解
  18. 从0开始集成Spring和mybatis
  19. IP 域名 DNS之间的区别
  20. 密码管理软件:Keepass2Android-1.09a-r3

热门文章

  1. Half a million dollars is or are a lot of money?
  2. 国内CMS技术发展的外在表现形式
  3. LRU算法(JAVA实现)
  4. Linux查看磁盘空间的命令
  5. 为啥VUE和React都选择hooks
  6. 超市管理系统的html页面,基于WEB的超市管理系统_站内搜索_Web开发网
  7. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法
  8. DataList和ListView数据控件的使用
  9. jmeter中控制器的使用
  10. 每日启程——2019.12.11日(草木有本心,何求美人折)