Java中使用DOM4J来生成xml文件和解析xml文件
一、前言
现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有好多种方法,小编觉得还是DOM4J用的最多最广泛也最好理解的吧.小编也是最近需求里遇到了,就来整理一下自己的理解,只适合刚刚学习的,一起理解!今天我们把解析xml文件和生成xml文件在一起来展示.
二、准备依赖
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
三、生成xml文件
- 生成标准展示

- 生成xml代码
/**
* 使用DOM4J生成xml方法
*/
public static void createXml(){
try {
// 创建document对象
Document document = DocumentHelper.createDocument();
// 创建根节点bookRoot
Element StudentRoot = document.addElement("StudentRoot");
// 向根节点中添加第一个节点
Element book1 = StudentRoot.addElement("student");
// 向子节点中添加属性
book1.addAttribute("id","1");
// 向节点中添加子节点
Element name = book1.addElement("name");
// 向子节点赋值
name.setText("小乔");
Element price = book1.addElement("age");
price.setText("18");
// 向根节点中添加第二个节点
Element book2 = StudentRoot.addElement("student");
book2.addAttribute("id","2").addElement("name").setText("大桥");
book2.addElement("age").setText("20");
// 向根节点中添加第三个节点
Element book3 = StudentRoot.addElement("student");
book3.addAttribute("id","3").addElement("name").setText("孙策");
book3.addElement("age").setText("21");
// 设置生成xml的格式
OutputFormat of = OutputFormat.createPrettyPrint();
// 设置编码格式
of.setEncoding("UTF-8");
// 生成xml文件
File file = new File("E:\\student.xml");
if (file.exists()){
file.delete();
}
//创建一个xml文档编辑器
XMLWriter writer = new XMLWriter(new FileOutputStream(file), of);
//把刚刚创建的document放到文档编辑器中
writer.write(document);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
四、解析xml文件
解析xml的文件就是刚刚导出的那个样子,我们展示两种情况,一个是知道属性名字和子元素名字的我们把解析的xml文件数据放到实体类中.不知道的就直接打印到控制台.
- 实体类展示
import lombok.Data;
@Data
public class Student {
private int id;
private String name;
private int age;
}
- 解析xml文件方法
public static void analysis(){
// 把要解析的xml变成file文件
File file = new File("E:\\student.xml");
// 获取解析器对象
SAXReader reader = new SAXReader();
// 把文件解析成document树
Document document = null;
try {
document = reader.read(file);
} catch (DocumentException e) {
e.printStackTrace();
}
// 获取根节点
Element studentRoot = document.getRootElement();
// 获取根节点中所有节点
List<Element> elements = studentRoot.elements();
// 存放xml中节点的数据集合
List<Student> list = new ArrayList<>();
// 便利所有节点
for (Element child : elements) {
Student student = new Student();
//已知属性名情况下
student.setId(Integer.parseInt(child.attributeValue("id")));//获取属性的数据
//已知子元素名的情况下
student.setName(child.elementText("name"));//获取元素中值
student.setAge(Integer.parseInt(child.elementText("age")));//获取元素中值
list.add(student);
//未知属性名情况下
List<Attribute> attributes = child.attributes();
for (Attribute attribute : attributes) {
System.out.println(attribute.getName() + "---> " + attribute.getValue());
}
//未知子元素名情况下
List<Element> elementList = child.elements();
for (Element ele : elementList) {
System.out.println(ele.getName() + "--->" + ele.getText());
}
}
//把解析xml出来的数据集合打印
list.forEach(x-> System.out.println(x));
}
- 解析结果展示

五、总结
这样我们就把DOM4J来生成xml文件和解析xml文件就都操作完成了,有什么问题留言哦!!谢谢大家
Java中使用DOM4J来生成xml文件和解析xml文件的更多相关文章
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
- python 之模块之 xml.dom.minidom解析xml
# -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- java中利用dom4j解析XML文件
官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回Li ...
- Java利用dom4j生成xml文件、解析XML
package com.fq.fanqi; import java.io.File;import java.io.FileWriter;import java.io.IOException;impor ...
- 在java中使用dom4j解析xml
创建xml文档并输出到文件 import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; impor ...
- Java中使用dom4j处理xml类型的文本
在Java的实际开发中经常会碰到xml文件的解析,需要获取固定节点的内容,在这里简单记录一下,方便下次使用时查阅: 1.VSCode中安装插件XML Format,Shift + Alt + F撸直x ...
- Java中的Dom4j
上一篇讲了Java中如何操作XML,现在介绍一个更厉害的方法,Dom4j ,百度查一下就知道,这个更强,更快,更简单. 自己下载jar包导入工具,下面来讲一个例子,我事先准备了一个XML文件,如下: ...
随机推荐
- 就这?Spring 事务失效场景及解决方案
小明:靓仔,我最近遇到了很邪门的事. 靓仔:哦?说来听听. 小明:上次看了你的文章<就这?一篇文章让你读懂 Spring 事务>,对事务有了详细的了解,但是在项目中还是遇到了问题,明明加了 ...
- JAVAWEB过滤器、监听器的作用及使用>从零开始学JAVA系列
目录 JAVAWEB过滤器.拦截器的作用及使用 过滤器Filter 什么是过滤器 为什么要使用过滤器(过滤器所能解决的问题) 配置一个过滤器完成编码的过滤 编写一个EncodingFilter(名称自 ...
- 剑指 Offer 40. 最小的k个数
剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:ar ...
- 记一次 .NET 某智慧水厂API 非托管内存泄漏分析
一:背景 1. 讲故事 七月底的时候有位朋友在wx上找到我,说他的程序内存占用8G,托管才占用1.5G,询问剩下的内存哪里去了?截图如下: 从求助内容看,这位朋友真的太客气了,动不动就谈钱,真伤感情, ...
- OI卷题记录
2021.8.2 LG3386 匈牙利算法 二分图 LG1377 笛卡尔树 题解 2021.8.3 LG2962 \(\text{Meet in middle}\) LG3389 高斯消元 高斯-约旦 ...
- Java进阶 | 从整体上观察面向对象
一.面向对象 面向对象是Java编程中最核心的思想,基本特征:继承.封装.多态. 1.特征之封装 将结构.数据.操作封装在对象实体中,使用时可以不关注对象内部结构,只能访问开放权限的功能入口,从而降低 ...
- shell免交互
目录 一.Here Document免交互 1.1.Here Document概述 1.2.注意事项 1.3.免交互示例 wc -l实现对行数的统计 read命令接收输入并打印 passwd给用户设置 ...
- 问题求解与程序设计(C重新回顾:个人版)一
一.容易遗忘之转义字符 转义序列 含义 \n 换行 \t 水平制表 \\ 输出反斜杠 \a 响铃符 \'' 输出双引号 \' 输出单引号 \? 输出问号 \r 输出回车符(不换行,光标定位当前行的开始 ...
- Proteus仿真—51单片机实现AC信号测频、显示、双机通信
文章目录 一.原理图部分 二.源码部分 单片机1 单片机2 在Proteus仿真软件里面使用STC89C52实现指定频率的AC信号的测频.显示.双机通信. 一.原理图部分 整体的电路图如示: DC-A ...
- uniapp scroll-view 组件横向滑动失效(ios问题出的最多)
注意事项(做好以下几点就很难出问题): 一.scroll-view组件必须有固定高度,不可出现高度坍塌或让高度消失等现象;(重中之重) 二.一般问题出的多的就是在nvue环境下去使用的scroll-v ...