dom4j——解析XML
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相关推荐
- 【学习笔记】关于DOM4J:使用DOM4J解析XML文档
一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org. ...
- Dom4j 解析Xml文档及XPath查询 学习笔记
本文查阅方法: 1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题 2.快捷"查找" -- 在当前浏览器页面,按键 "Ctrl+F" 按键 ...
- java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...
网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...
- 使用dom4j解析XML文件
为什么80%的码农都做不了架构师?>>> dom4j是一个java 的XML API,用来读写XML文件. 使用dom4j解析XML文件,首先需要在官网下载dom4j-1.6. ...
- Dom4J 解析xml ,类查询
/*** 从XML文件比对,传入provinceId 返回 provinceShortName * @param provinceid* @return*/public static String p ...
- Dom4j 解析Xml文档及 XPath查询 学习笔记
2019独角兽企业重金招聘Python工程师标准>>> 本文查阅方法: 1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题 2.快捷"查找" ...
- 使用DOM4J解析XML及采用Schema校验的方法
使用DOM4J解析XML及采用Schema校验的方法 Validation Currently dom4j does not come with a validation engine. You ar ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- java解析xml工具类_通过dom4j解析XML字符串XMLDocUtil工具类转换为XML文档及获取指定根节点及指定节点路径内容代码示例...
一.前言 通过dom4j解析XML文档的XMLDocUtil工具类,进行解析xml字符串为Document文档对象.获取根节点元素路径内容getRootElement.获取唯一路径节点的值getSin ...
- Java 使用 Dom4j 解析 XML 指南
Java 使用 Dom4j 解析 XML 指南 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用 ...
最新文章
- 编程语言也有环保排队?垫底的居然是它...
- 【涛声依旧】华为的“大服务”
- 2020-11-1(xml)
- python函数定义错误_[转载]python之函数的使用及异常处理2021.1.30
- 图像处理与图像识别笔记(六)图像增强3
- oracle进入到root用户,Linux环境中普通用户切换到root用户问题
- 翁恺java答案第五周_[JAVA]翁恺老师零基础学java语言第五周素数例题中continue的困惑...
- Hibernate与mybatis比较
- 利用Google翻译实现网站国际化——js插件
- 计算机笔记--【Java设计模式】
- 若依开发文档手册[持续更新:拥抱初次使用若依的开发者]
- win+e替换为xyplorer打开
- python实现微信hook_GitHub - redtips/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...
- Mysql 8.0 安装详细教程、问题处理、卸载(亲测可用)
- Winform中pictureBox控件SizeMode属性
- sd和sem啥区别_SD与SEM有区别吗
- 进程和线程最生动的理解
- 从0开始集成Spring和mybatis
- IP 域名 DNS之间的区别
- 密码管理软件:Keepass2Android-1.09a-r3
热门文章
- Half a million dollars is or are a lot of money?
- 国内CMS技术发展的外在表现形式
- LRU算法(JAVA实现)
- Linux查看磁盘空间的命令
- 为啥VUE和React都选择hooks
- 超市管理系统的html页面,基于WEB的超市管理系统_站内搜索_Web开发网
- 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法
- DataList和ListView数据控件的使用
- jmeter中控制器的使用
- 每日启程——2019.12.11日(草木有本心,何求美人折)