本文学习使用dom4j解析xml文件
在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特 别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件(摘自dom4j百度百科)。
附加dom4j官网下载地址,官网进不了的可以自行搜索dom4j-1.6.1进行下载。
1、将dom4j-1.6.1.jar包添加到项目构建路径,注意某些类导包时选择导入org.dom4j下的包。
在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特 别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件(摘自dom4j百度百科)。
附加dom4j官网下载地址,官网进不了的可以自行搜索dom4j-1.6.1进行下载。
http://sourceforge.net/projects/dom4j/files/latest/download?source=files
1、将dom4j-1.6.1.jar包添加到项目构建路径,注意某些类导包时选择导入org.dom4j下的包。
2、新建students.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<学生列表>
<学生 学号="20131231002">
<姓名>张琴</姓名>
<性别>女</性别>
<专业>英语</专业>
<班级>201303</班级>
<学分>700</学分>
</学生>
<学生 学号="20131232006">
<姓名>王海</姓名>
<性别>男</性别>
<专业>计算机</专业>
<班级>201302</班级>
<学分>800</学分>
</学生>
<学生 学号="20131239006">
<姓名>李飞</姓名>
<性别>男</性别>
<专业>金融</专业>
<班级>201303</班级>
<学分>750</学分>
</学生>
</学生列表>
3、读取xml文件代码如下:
package com.example;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jReadXml {
public static void main(String[] args) {
try {
SAXReader saxReader = new SAXReader();
//获取document
Document document =saxReader.read(new File("students.xml"));
//得到根元素,即学生列表元素
Element root = document.getRootElement();
//获取学生列表元素组
List<Element> studentList = root.elements("学生");
//遍历学生列表元素组
for(Iterator<Element> i = studentList.iterator(); i.hasNext(); )
{
//获取学生元素
Element student = i.next();
//输出学生学号
System.out.println(student.getName()+":"+student.attributeValue("学号"));
//获取学生元素子元素列表
List<Element> studentChildList = student.elements();
//遍历学生元素子元素列表
for(Iterator<Element> j = studentChildList.iterator(); j.hasNext(); )
{
//获取学生子元素
Element studentChild = j.next();
//输出学生子元素
System.out.println(studentChild.getName()+":"+studentChild.getText());
}
System.out.println("----------------");
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
输出结果:
4、写入xml文件代码如下:
package com.example;
import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
public class Dom4jWriteXml {
public static void main(String[] args) {
//获取document
Document document = DocumentHelper.createDocument();
//添加学生列表根元素
Element root = document.addElement("学生列表");
//添加学生元素
Element student = root.addElement("学生");
//添加学号属性
student.addAttribute("学号", "20131231002");
//依次添加姓名、性别、专业、班级、学分属性
Element name = student.addElement("姓名");
name.setText("张琴");
Element sex = student.addElement("性别");
sex.setText("女");
Element prof = student.addElement("专业");
prof.setText("英语");
Element clas = student.addElement("班级");
clas.setText("201303");
Element grade = student.addElement("学分");
grade.setText("700");
//document转换为String
String xml = document.asXML();
//输出转换后的document
System.out.println(xml);
try {
//新建XMLWriter对象
XMLWriter write = new XMLWriter(new FileWriter("example.xml"));
//将document存储到缓存
write.write(document);
//刷新缓存,即存储到xml文件中
write.flush();
//输出提示信息
System.out.println("保存文件成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
5、通过读取和写入xml文件的学习,修改和删除也应该容易理解了,只需通过某个节点或元素调用一系列remove方法即可。