XML文档的简易增删查改
dom4j解析
一、利用dom4j操作元素节点
1.查询第一本书的书名,并输出到控制台
2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元
3.删除第二本书的作者节点
二、利用dom4j操作属性节点
1.给第一本书添加一个属性,如:出版社="清华大学出版社"
2.在控制台上打印输出第一本书的出版社属性的值, 并更新属性的值为“人民出版社”
3.删除第一本书的出版社属性
-------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<书架>
<书>
<书名>数据结构</书名>
<作者>严蔚敏</作者>
<售价>29.00元</售价>
</书>
<书>
<书名>高等数学</书名>
<作者>同济大学数学系</作者>
<售价>55.00元</售价>
</书>
</书架>
-------------------------------------------
代码实现如下:
import java.io.filewriter;
import java.util.iterator;
import org.dom4j.attribute;
import org.dom4j.document;
import org.dom4j.documentexception;
import org.dom4j.element;
import org.dom4j.io.outputformat;
import org.dom4j.io.saxreader;
import org.dom4j.io.xmlwriter;
public class domtest {
/*
* 一、利用dom4j操作元素节点
1.查询第一本书的书名,并输出到控制台
2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元
3.删除第二本书的作者节点
二、利用dom4j操作属性节点
1.给第一本书添加一个属性,如:出版社="清华大学出版社"
2.在控制台上打印输出第一本书的出版社属性的值, 并更新属性的值为“人民出版社”
3.删除第一本书的出版社属性
*/
@suppresswarnings("deprecation")
public static void main(string[] args) throws exception {
//创建一个输入流,使xml文件成为一个document,先建立一个对象reader,然后
//用这个对象去调用方法
saxreader reader = new saxreader();
//读取xml文件
document doc = reader.read("src/1.xml");
//查询第一本书的名字,并输出到控制台
//先获取根目录
element root =doc.getrootelement();
//迭代获取下面的元素(子目录)
iterator it1 = root.elementiterator("书");
//获取二级子目录
element e1 = (element) it1.next();
iterator it2 = e1.elementiterator("书名");
element e2 = (element) it2.next();
system.out.println(e2.getname()+ "---" + e2.gettext());
//以上内容完成了查的工作
//2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元
//创建一个书下面的新的节点为“特价”
element e3 = e1.addelement("特价");
iterator it4 = e1.elementiterator("售价");
element e6 =(element) it4.next();
e6.settext("19.8元");
//3.删除第二本书的作者节点
element e4 = (element) it1.next();
iterator it3 = e4.elementiterator("作者");
element e5 = (element) it3.next();
boolean b = e4.remove(e5);
system.out.println(b);
//给第一本书添加一个属性,如:出版社="清华大学出版社"
//设置后返回的是该元素,也就是e7和e1是同一个
element e7 = e1.addattribute("出版社", "清华大学出版社");
//在控制台上打印输出第一本书的出版社属性的值, 并更新属性的值为“人民出版社”
attribute a = e1.attribute("出版社");
system.out.println(a.getvalue());
a.setvalue("人民 出版社");
system.out.println(a.getvalue());
//删除第一本书的出版社属性
e1.remove(a);
outputformat format = outputformat.createprettyprint();
format.setencoding("gbk");
xmlwriter writer = new xmlwriter(new filewriter("src/2.xml"),format);
writer.write(doc);
writer.close();
}
}