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 ...
随机推荐
- python函数及算法
算法二分法 二分算法图 什么是算法? 算法是高效解决问题的办法. 需求:有一个按照从小到大顺序排列的数字列表,查找某一个数字 # 定义一个无序的列表 nums = [3,4,5,67,8,9,12 ...
- Hive详解(01) - 概念
Hive详解(01) - 概念 hive简介 Hive:由Facebook开源用于解决海量结构化日志的数据统计工具,是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类S ...
- [cocos2d-x]关于Action
Action的分类 第一种:FiniteTimeAction类:有限时间的动作类 第二种:Follow类:节点跟随另一种节点的类 第三种:Speed类:节点执行速度类 第一种有限时间的动作类又分为瞬时 ...
- C++获取含有中文字符的string长度
:前言 造车轮的时候要用到中文字符串的长度辨别,发现char的识别不准,进行了一番研究. > 开始研究 在Windows下,中文字符在C++中的内存占用为2字节,此时采用字符串长度获取函数得到的 ...
- [Codeforces Round #816 (Div. 2)] D. 2+ doors
这次Div.2比之前我打的有些要难啊,前三道题就耗了好多时间,D题干脆摆烂了... 还是太逊了 对于一个\(x\),有\(x|y_i=z_i\),那么我们设\(num[x]=z_1\)&\(z ...
- 宇宙无敌搞笑轻松弄懂java动态代理
https://www.cnblogs.com/ferryman/p/13170057.html jdk动态代理和cglib动态代理区别 https://blog.csdn.net/shallynev ...
- RabbitMQ消息队列入门及解决常见问题
RabbitMQ消息队列 同步通讯和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发邮件,不需要马上回复. 两种方式各有优劣,打电话可以立即得到响应 ...
- 【Oculus Interaction SDK】(一)设置 VR 相机与控制器 && 实现简单的抓取功能
前言 前段时间 Oculus 的 SDK 频繁更新,很多已有的教程都不再适用于现在的版本了.本系列文章的主要目的是记录现版本常见功能的实现方法,便于自己后续开发.当然,不排除我文章刚写完 SDK 又变 ...
- 10月31日ATM编写逻辑描述
目录 ATM逻辑描述 三层框架简介 1.第一层(src.py) 2.第二层(interface文件夹下内容) 3.第三层(db_hanlder) 启动函数 用户注册功能 用户登录 common中的小功 ...
- Windows / Mac 安装Typora
Typora Typora 是一款支持实时预览的 Markdown 文本编辑器. 附件下载:Typora 附件 Windows版本 1.解压Typora_1.3.8_windows.rar文件 2.双 ...