解析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文件的更多相关文章

  1. JavaWeb_使用dom4j解析、生成XML文件

    dom4j 官网 xml解析DOM文档对象模型(树形结构) DOM方式解析:把xml文档加载到内存形成树形结构,可以进行增删改的操作 Learn   使用dom4j解析文件"NewFile. ...

  2. 使用Pull解析器生成XML文件和读取xml文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...

  3. 使用Pull解析器生成XML文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...

  4. maven中使用dom4j解析、生成XML的简易方法

    此片文章主要写一些关于如何在maven工程中使用dom4j来解析或生成XML的建议方法,实际可使用的写法不仅限于如下所写的样例代码.此处进攻快速入手和提供思路使用. 首先配置pom.xml中的依赖的包 ...

  5. Dom4j解析、生成Xml

    1以下代码未Xml的解析和生成代码 <?xml version="1.0" encoding="UTF-8"?> <users> < ...

  6. python xml文件解析 及生成xml文件

    #解析一个database的xml文件 """ <databaselist type="database config"> <dat ...

  7. dom4j解析简单的xml文件 解析元素并封装到对象

    package cn.itcast.xml; import cn.itcast.domain.Book; import org.dom4j.Document; import org.dom4j.Doc ...

  8. dom4j解析以及生成xml字符串测试

    public static void main(String[] args) { String xmlStr = "<ybjcVo>"+ "<zbGri ...

  9. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  10. Java&Xml教程(四)使用DOM方式生成XML文件

    在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件. 下面是我们对要生成的XML文件的具体要求: 1.根节点元素为"Em ...

随机推荐

  1. C#多线程(四)并行编程篇之结构化

    前言 在前三章中我们的案例大量使用到了Thread这个类,通过其原始API,对其进行创建.启动.中断.中断.终止.取消以及异常处理,这样的写法不仅不够优雅(对接下来这篇,我称其为.NET现代化并行编程 ...

  2. Hadoop详解(01)-概论

    Hadoop详解(01)概论 概念 大数据(Big Data):指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量 ...

  3. 20 张图带你全面了解 HTTPS 协议,再也不怕面试问到了!

    本文详细介绍了 HTTPS 相较于 HTTP 更安全的原因,包括对称加密.非对称加密.完整性摘要.数字证书以及 SSL/TLS 握手等内容,图文并茂.理论与实战结合.建议收藏! 1. 不安全的 HTT ...

  4. Spring项目中用了这种解耦模式,经理对我刮目相看

    前言 不知道大家在项目中有没有遇到过这样的场景,根据传入的类型,调用接口不同的实现类或者说服务,比如根据文件的类型使用 CSV解析器或者JSON解析器,在调用的客户端一般都是用if else去做判断, ...

  5. python进阶之路21 正则应用 第三方模块之requests模块 openpyxl模块 简易爬虫(pandas)

    作业讲解 """ 网络爬虫没有我们现在接触的那么简单 有时候页面数据无法直接拷贝获取 有时候页面还存在防爬机制 弄不好ip会被短暂拉黑 """ ...

  6. [Untiy]贪吃蛇大作战(一)——开始界面

    前言: 刚学unity没多久吧(大概1个月多点),这是我自己做的除官网之外的第一个游戏demo,中间存在很多不足的地方,但是还是希望可以给需要的人提供一些思路和帮助,有问题的小伙伴可以找我一起探讨一起 ...

  7. Ubuntu 22.04 BigSur 美化

    安装 tweaks sudo apt update && sudo apt upgrade sudo apt install gnome-tweaks gnome-shell-exte ...

  8. Strapi入门记--01创建项目,账户,测试表,测试接口

    Strapi 是什么 中文文档地址 Strapi 是一个开源的无头 CMS,开发人员可以自由选择他们喜欢的工具和框架,并允许编辑使用他们的应用程序的管理面板来管理和分发他们的内容.基于一个插件系统,S ...

  9. 前端防错以及好用小tips指南总结

    @前端防錯以及好用小tips指南總結 1.一般情況下我們接收到的都是對象格式,某些情況下,需要接到後端傳過來的奇怪的字符串格式的JSON,需要解析成對象,但是有時候他們傳過來的格式有問題,會報錯 解決 ...

  10. Typora软件下载与markdown语法的使用

    Typora软件下载与markdown语法的使用 一.Typora下载 1.Typora的简介 Typora是一款轻量级文本编辑器,文本阅读器,是目前最火爆的文本编辑器. Typora中格式,字体,主 ...