dom4j解析和生成xml文件
解析xml大致步骤:
1: 创建SAXReader;
2: 使用SAXReader解析指定的xml文档信息,并返回对应Document对象。Document对象中就包含了该xml文中的所有信息以及结构了。
3: 根据文档结构将xml描述的树状信息读取到 。
现有emp.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<emp id="1">
<name>提利昂·兰尼斯特</name>
<age>25</age>
<gender>男</gender>
<salary>5000</salary>
</emp>
<emp id="2">
<name>卡丽熙</name>
<age>27</age>
<gender>女</gender>
<salary>6000</salary>
</emp>
<emp id="3">
<name>琼恩·雪诺</name>
<age>28</age>
<gender>男</gender>
<salary>7000</salary>
</emp>
<emp id="4">
<name>布兰·斯塔克</name>
<age>22</age>
<gender>男</gender>
<salary>8000</salary>
</emp>
<emp id="5">
<name>nightKing</name>
<age>26</age>
<gender>未知</gender>
<salary>9000</salary>
</emp>
</list>
新建一个emp实体类,用于接收解析数据:
public class Emp {
private int id;
private String name;
private int age;
private String gender;
private int salary;
public Emp(){
}
public Emp(int id,String name,int age,String gender,int salary){
super();
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.salary = salary;
}
//get,set略
}
public class ParseXmlDemo {
public static List getXml(){
try {
SAXReader reader=new SAXReader();
Document doc=reader.read(new File("emp.xml"));
List<Emp> list=new ArrayList<Emp>();
/*
* 解析第一步,获取根标签(根元素)
* 这里获取的根标签就相当于是<list>...</list>
* 那对标签。
*/
Element root=doc.getRootElement();
//获取名为"emp"的标签
List<Element> elementList=root.elements("emp");
//遍历每一个emp标签
for(Element empEle:elementList){
//获取name
String name=empEle.elementText("name");
int age=Integer.parseInt(empEle.elementText("age"));
String gender=empEle.elementText("gender");
int salary=Integer.parseInt(empEle.elementText("salary"));
//属性
Attribute attr=empEle.attribute("id");
int id=Integer.parseInt(attr.getValue());
Emp emp=new Emp(id,name,age,gender,salary);
list.add(emp);
}
return list;
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.toString());
}
return null;
}
public static void main(String[] args) {
List list=ParseXmlDemo.getXml();
System.out.println(list.toString());
}
}
输出结果:
1,提利昂·兰尼斯特,25,男,5000,
2,卡丽熙,27,女,6000,
3,琼恩雪诺,28,男,7000,
4,布兰斯塔克,22,男,8000,
5,nightKing,26,未知,9000
生成xml大致步骤:
1: 创建一个Document对象,表示一个空的xml文档;
2: 向Document中添加根元素;
3: 按照目标xml文档的结构顺序向根元素中添加子元素来组建该结构;
4: 创建XMLWriter;
5: 设置低级流;
6: 使用XMLWriter将Document写出来生成 该文档 。
public class WriteXmlDemo {
public static void main(String[] args) {
try {
List<Emp> list= new ArrayList<Emp>();
list.add(new Emp(1,"鸣人",25,"男",4000));
list.add(new Emp(2,"小樱",27,"女",6000));
list.add(new Emp(3,"佐助",28,"男",7000));
list.add(new Emp(4,"雏田",22,"女",8000));
list.add(new Emp(5,"卡卡西",26,"男",90001));
Document doc = DocumentHelper.createDocument();
//生成根元素
Element root = doc.addElement("list");
for(Emp emp : list){
//根标签下添加子标签
Element empEle= root.addElement("emp");
//向emp标签中添加子标签name
Element nameEle= empEle.addElement("name");
//标签赋值
nameEle.addText(emp.getName());
Element ageEle = empEle.addElement("age");
ageEle.addText(emp.getAge()+"");
Element genderEle = empEle.addElement("gender");
genderEle.addText(emp.getGender());
Element salaryEle = empEle.addElement("salary");
salaryEle.addText(emp.getSalary()+"");
//添加属性
empEle.addAttribute("id", emp.getId()+"");
}
//org.dom4j.XMLWriter
XMLWriter writer = new XMLWriter(
OutputFormat.createPrettyPrint());
/*
* 向文件myemp.xml中写出数据
*/
FileOutputStream fos= new FileOutputStream("myemp.xml");
writer.setOutputStream(fos);
writer.write(doc);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
生成myemp.xml:
<?xml version="1.0" encoding="UTF-8"?> <list>
<emp id="1">
<name>鸣人</name>
<age>25</age>
<gender>男</gender>
<salary>4000</salary>
</emp>
<emp id="2">
<name>小樱</name>
<age>27</age>
<gender>女</gender>
<salary>6000</salary>
</emp>
<emp id="3">
<name>佐助</name>
<age>28</age>
<gender>男</gender>
<salary>7000</salary>
</emp>
<emp id="4">
<name>雏田</name>
<age>22</age>
<gender>女</gender>
<salary>8000</salary>
</emp>
<emp id="5">
<name>卡卡西</name>
<age>26</age>
<gender>男</gender>
<salary>90001</salary>
</emp>
</list>
dom4j解析和生成xml文件的更多相关文章
- JavaWeb_使用dom4j解析、生成XML文件
dom4j 官网 xml解析DOM文档对象模型(树形结构) DOM方式解析:把xml文档加载到内存形成树形结构,可以进行增删改的操作 Learn 使用dom4j解析文件"NewFile. ...
- 使用Pull解析器生成XML文件和读取xml文件
有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...
- 使用Pull解析器生成XML文件
有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...
- maven中使用dom4j解析、生成XML的简易方法
此片文章主要写一些关于如何在maven工程中使用dom4j来解析或生成XML的建议方法,实际可使用的写法不仅限于如下所写的样例代码.此处进攻快速入手和提供思路使用. 首先配置pom.xml中的依赖的包 ...
- Dom4j解析、生成Xml
1以下代码未Xml的解析和生成代码 <?xml version="1.0" encoding="UTF-8"?> <users> < ...
- python xml文件解析 及生成xml文件
#解析一个database的xml文件 """ <databaselist type="database config"> <dat ...
- dom4j解析简单的xml文件 解析元素并封装到对象
package cn.itcast.xml; import cn.itcast.domain.Book; import org.dom4j.Document; import org.dom4j.Doc ...
- dom4j解析以及生成xml字符串测试
public static void main(String[] args) { String xmlStr = "<ybjcVo>"+ "<zbGri ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- Java&Xml教程(四)使用DOM方式生成XML文件
在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件. 下面是我们对要生成的XML文件的具体要求: 1.根节点元素为"Em ...
随机推荐
- STM32按键控制LED亮灭的代码
led.c #include "led.h" void LED_Config(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2P ...
- 【转载】VFP编写DLL,并调用
1. 编制DLL文件 ,保存为Temp.prg Define Class vfptools As Session OlePublic Procedure Add As Integer Lp ...
- 万字长文解析Scaled YOLOv4模型(YOLO变体模型)
一,Scaled YOLOv4 摘要 1,介绍 2,相关工作 2.1,模型缩放 3,模型缩放原则 3.1,模型缩放的常规原则 3.2,为低端设备缩放的tiny模型 3.3,为高端设备缩放的Large模 ...
- Vue前后端分离实现登录的一个简单demo
1.建立一个Maven项目,并添加Spring相关依赖 2.编写Controller类相应的接口和配置类 LoginController类,编写接口的业务逻辑 package com.springbo ...
- 学习ASP.NET Core Blazor编程系列十九——文件上传(下)
学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应 ...
- 推荐给Amy的书单
目录 皮囊 推荐等级 ※ ※ ※ ※ ※ 白夜行 推荐等级 ※ ※ ※ ※ ※ 人生 推荐等级 ※ ※ ※ ※ 活着 推荐等级 ※ ※ ※ ※ 许三观卖血记 推荐等级 ※ ※ ※ ※ 皮囊 推荐等级 ...
- 基于Spark的均值漂移算法在网络舆情聚类中的应用
知网链接 原文链接 张京坤, 王怡怡 软件导刊 2020年19卷第9期 页码:190-195 DOI:10.11907/rjdk.192529 出版日期:2020-9-15 摘 要: 为了改善网 ...
- 轻松解决 CSS 代码都在一行的问题
前言 最近在做博客园的界面美化,用的是博客园[guangzan]的开源项目,配置超级简单,只需要复制粘贴代码就好啦. 但在粘贴 CSS 代码时遇到一个问题,那就是所有代码都挤在了一行,没有一点排板的样 ...
- 深入理解 OpenMP 线程同步机制
深入理解 OpenMP 线程同步机制 前言 在本篇文章当中主要给大家介绍 OpenMP 当中线程的同步和互斥机制,在 OpenMP 当中主要有三种不同的线程之间的互斥方式: 使用 critical 子 ...
- MAC实用操作记录---使用命令执行文件上传下载解压打包与解包
1.使用命令执行文件上传下载 https://www.cnblogs.com/sugartang/p/12743470.html 2.提示:打不开xx软件,在 OS X 安装软件打不开提示" ...