dom4j是1个Java的XML API,类似于jdom,用来读写XML文件的。我们说Dom4j是1个框架,框架就是很多很多类的集合,它整合了DOM思想,将文档中的所有内容创建成对象放到内存中,利用事件驱动来对XML实现不同的操作。
1.Dom4j的引入
使用Dom4j时,必须首先引入dom4j.jar,如果使用到了它的拓展功能,还需要引入jaxen⑴.1-beta⑹.jar。
2.对XML的操作
要想实现对XML的操作,首先必须读取到XML文档:
SAXReader reader = new SAXReader();
Document document = reader.read(new File(src/student.xml));
①查询
//1取得根元素
Element root = document.getRootElement();
//2遍历根元素下student的子元素
Iterator<Element> it = root.elementIterator(student);
while(it.hasNext()){
Element studentEle = it.next();
//3取得number属性
String number =studentEle.attributeValue(number);
String name = studentEle.elementText(name);
String age = studentEle.elementText(age);
String sex = studentEle.elementText(sex);
}
②添加
//1获得students根元素
Element root = document.getRootElement();
//2添加学生元素
Element student = root.addElement(student).addAttribute(number,ITCAST_003);
//3增加子元素
student.addElement(name).addText(Fanny);
student.addElement(age).addText(23);
student.addElement(sex).addText(female);
//4将新添加的写回到文档中
//1>创建格式化器
OutputFormat format = OutputFormat.createPrettyPrint();
//2>创建写入器
XMLWriter writer = new XMLWriter(new FileWriter(src/studentcopy.xml),format);
//3>写入文件
writer.write(document);
//4>关闭资源
writer.close();
③删除
//1.获得根元素
Element root = document.getRootElement();
//2.遍历student的子元素
//2.1>方法1
Iterator<Element> it = root.elementIterator(student);
while(it.hasNext()){
Element studentEle = it.next();
String number = studentEle.attributeValue(number);
if(number == jerry){
it.remove();
}
}
//2.2方法2
List<Element> list = root.elements(student);
for(int i = 0; i < list.size(); i++){
Element studentEle = list.get(i);
//3.判断学号是不是等于被删除学生,是的话就履行删除
if(itcast_0001.equals(studentEle.attribute(number))){
studentEle.getParent().remove(studentEle);
break;
}
}
//3.保存到文档
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream(src/studentDel.xml),format);
writer.write(document);
writer.close();
总结:
在学习Dom4j的进程中,感觉很像学习js的时候对DOM的操作,实际上,Dom4j也正是在DOM的基础上实现对XML的操作的,所以这1块的学习1定要和之前的HTML DOM结合起来,会事半功倍的。