解析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. 多表查询两种方法、可视化软件navicat、python操作mysql、pymysql模块

    目录 多表查询的思路 多表查询的两种方法 小知识点补充数说明 可视化软件Navicat 安装教程 数据库常用操作 多表查询练习题 python 操作MySQL pymysql补充说明 Non-grou ...

  2. overflow:scroll修改样式

    当overflow :scroll 出现滚动条后,默认的滚动条样式太丑了,不是我们想要的,那么我们来修改一下吧!~ 话不多说,直接上代码  /* 定义滚动条样式 */ ::-webkit-scroll ...

  3. 04-CURD

    Insert @Test//测试插入 public void insertTest(){ User user = new User(); user.setName("wsk"); ...

  4. 学习.NET MAUI Blazor(三)、创建.NET MAUI Blazor应用并使用AntDesignBlazor

    大致了解了Blazor和MAUI之后,尝试创建一个.NET MAUI Blazor应用. 需要注意的是: 虽然都叫MAUI,但.NET MAUI与.NET MAUI Blazor 并不相同,MAUI还 ...

  5. eclipse启动一个Springboot项目

    1.准备一个Springboot项目 2.配置好maven 注:本地的maven-repository默认路径是在系统盘的.m文件夹.如果想要修改可参考: eclipse修改maven仓库的位置_本本 ...

  6. S2-032 CVE-2016-3081 远程代码执行

    漏洞名称 CVE-2016-3081 S2-032 远程代码执行 利用条件 Struts 2.3.20 - Struts Struts 2.3.28 ( 2.3.20.3 和 2.3.24.3 除外) ...

  7. [cocos2d-x]捕鱼达人鱼和子弹的碰撞检测

    检测方法如图所示,步骤在注释中也写的很清楚了.

  8. Java连接Zookeeper以及书写简单增删改查的方法

    Java连接Zookeeper以及书写简单增删改查的方法   摘要:本笔记主要记录了使用IDEA创建一个Maven项目并使用Maven配置文件下载Zookeeper连接驱动,连接云服务器的Zookee ...

  9. 疯狂吐槽 MAUI 以及 MAUI 入坑知识点

    目录 窗口 窗口管理 如何限制一次只能打开一个程序 MAUI 程序安装模式 为 MAUI Blazor 设置语言 坑 ① 坑 ② 坑 ③ 配置 MAUI 项目使用管理员权限启动 问题背景 定制编译过程 ...

  10. Ubuntu 安装 Anaconda

    下载 anaconda 官网 https://repo.anaconda.com/archive/ 国内镜像 https://mirrors.bfsu.edu.cn/anaconda/archive/ ...