DOM4J解析xml
概念:以一切皆对象的原则将xml当成一个对象,在程序中对对象进行进行增删改查的操作即达到了对xml文件进行增删改查的操作。
先讲述在建立好xml文件的基础上,对xml文件进行的操作
创建xml文件,以eclipse为例,
在src下 new>>other>>输入xml>>创建xml文件
xml文件(Student.xml)
代码片
.
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="1">
<name>小花</name>
<age>23</age>
<sex>女</sex>
</student>
<student id="2">
<name>小名</name>
<age>24</age>
<sex>男</sex>
</student>
</students>
一:将xml文件转换为对象(如下转换成doc对象)
二:对doc对象进行增删改查的操作(这里演示查的操作)
代码片
.
//先获取根文件,对根文件的操作至关重要,解析xml遵循一个
//原则一切从根文件开始操作
Element root=doc.getRootElement();
//dom4j包内提供了一个很好用的工具:元素迭代器
//用来迭代该根元素下的所有的标签值为"student"的子元素
Iterator it=root.elementIterator("student");
while(it.hasNext()) {
//获取遍历器中的元素
Element e=(Element)it.next();
//输出元素里面属性的值
System.out.println(e.attributeValue("id"));
//这里原本不用遍历器,但为了增加理解,这里想得到e元素下的子元素的值
//于是用遍历器的方式,得到所有name标签的子元素
Iterator ot=e.elementIterator("name");
while(ot.hasNext()) {
//得到e元素的子元素
Element e1=(Element)ot.next();
//得到该属性的标签名
e1.getName();
e1.getText();
//得到该元素值与e1.getStringValue效果一样
e1.getStringValue();
//得到该元素的父元素
Element e2=e1.getParent();
//得到该元素子元素中标签名为name的元素
e2.elementText("name");
三:将处理好的doc对象放回到xml文件,这里的放回是将原有的xml文件覆盖。
代码片
.
//为了使xml文件的格式更加友好,OutputFormat这个类是单独存在,使得格式友好实现了Cloneable接口
//即克隆接口,专门克隆文件并格式化文件的。
OutputFormat format=OutputFormat.createPrettyPrint();
//设置字符码
format.setEncoding("GBK");
File file=new File("src/student1.xml");
//与文件进行传输
FileWriter fw=new FileWriter(file);
//处理流,用来传递xml文件,并格式化
XMLWriter writer=new XMLWriter(fw, format);
writer.write(doc);
writer.close();