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文件,如下: ...
随机推荐
- MySql查询上周(周一到周日)每天的日期!土方!
首先介绍一个函数:YEARWEEK(date[,mode]) 主要说明一下后面的可选参数mode,这个参数就是指定一周里面哪一天是第一天. 默认一周是从周日开始,这显然不太符合我们的要求.要指定每周从 ...
- 最高级的AutoHotkey重试源代码结构20191221.docx
;; 最高级的AutoHotkey重试源代码结构20191221.docx;; 在编写AutoHotkey脚本时经常要用到重试,; 单击控件无效时需要重新再单击,; 发送模拟按键无效时需要重新发送.; ...
- WordPress如何配置邮件发送?
WordPress配置了邮件发送最直接的用处就是可以通过邮件找回密码,当然还有其他的用处,比如Wordpress有新用户注册,订单状态.评论等发生变化时给管理员发送邮件提醒等. 经过大量用户实践反馈, ...
- 计算机网络part2——物理层
物理层概述 1.物理层基本概念 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体. 主要任务:确定与传输媒体接口有关的一些特性 特性: 机械特性 电气特性 功能特性 规 ...
- 官宣 .NET MAUI 预览版 6
最近,我们发布了.NET 多平台应用程序UI (MAUI)的最新进展. 在此版本中,我们全力支持Visual Studio 2022 预览版2.这也标志着我们首次将.NET MAUI 作为工作负载安装 ...
- 985硕艰难转行Android之路 加面经分享
个人情况介绍 本人为某末流985工科硕士,说来令人感慨,我的考研之路异常曲折,每次都觉得自己能十拿九稳,结果每次都阴差阳错,失之交臂,第一次因为那年目标院校大幅度提升初试线,导致差一分未过线,第二次换 ...
- OpenStack镜像制作笔记 --以windows8.1-amd64为例
by hyc 目录 1.下载win8_64位的iso文件 2.下载对应电脑的vnc 3.下载Xshell软件 4.连接成功后,在Xshell下安装软件包 5.下载FileZilla Client软件 ...
- 算法竞赛中的常用JAVA API :HashSet 和 TreeSet(转载)
算法竞赛中的常用JAVA API :HashSet 和 TreeSet set set容器的特点是不包含重复元素,也就是说自动去重. HashSet HashSet基于哈希表实现,无序. add(E ...
- spring学习08(声明式事务)
11.声明式事务 11.1 回顾事务 事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎! 事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性. 事务就是把一系列的动作当 ...
- mongodb(docker-compose)
version: '3.1' services: mongo: image: mongo restart: always environment: MONGO_INITDB_ROOT_USERNAME ...