package exam3;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
public class Dom4j {
Document doc;
private String name,age,school;
//获得dom树
public void getDom(File file){
SAXReader reader=new SAXReader();
try {
this.doc=reader.read(file);
} catch (DocumentException e) {
e.printStackTrace();
}
}
//解析XML文档
public void showXML(){
//获取根节点 students
Element root = doc.getRootElement();
//迭代输出根节点的子节点 student
Iterator<Element> itStu = root.elementIterator("student");
while (itStu.hasNext()){
Element stuEle = itStu.next();
//1.根据name节点获得姓名
Iterator<Element> itName = stuEle.elementIterator("name");
while (itName.hasNext()){
Element nameEle = itName.next();
this.name = nameEle.getText();
//2.根据age标签获得年龄
Iterator<Element> itAge = stuEle.elementIterator("age");
while(itAge.hasNext()){
Element ageEle = itAge.next();
this.age= ageEle.getText();
}
//3.根据school标签获得学校
Iterator<Element> itSchool = stuEle.elementIterator("school");
while(itSchool.hasNext()){
Element schoolEle = itSchool.next();
this.school= schoolEle.getText();
}
Student stu=new Student(name,age,school);
stu.showInfo();
}
}
}
//保存文件
public void save(File file){
XMLWriter writer=null;
try {
writer=new XMLWriter(new FileOutputStream(file));
writer.write(doc);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("保存成功");
}
//添加
public void add(){
//查找根节点
Element root = doc.getRootElement();
//根据根节点创建新的student节点
Element stuEle = root.addElement("student");
//设置新节点的属性
stuEle.addAttribute("type","保送");
//1.student新节点的子节点 name
Element nameEle = stuEle.addElement("name");
//name节点的文本值
nameEle.addText("王五");
//2.子节点 age
Element ageEle = stuEle.addElement("age");
//age文本值
ageEle.addText("20");
//3.子节点 school
Element schoolEle = stuEle.addElement("school");
//name文本值
schoolEle.addText("清华");
System.out.println("添加成功");
}
//修改
public void modfiy(){
//查找根节点
Element root = doc.getRootElement();
//给studunet节点type属性值为"保送"的替换成"自考"
Iterator<Element> itStu = root.elementIterator("studnent");
while (itStu.hasNext()) {
//转换为元素节点
Element stuEle=itStu.next();
//不能为空
if (stuEle.attributeValue("type")!=null){
if (stuEle.attributeValue("type").equals("保送")) {
//修改
stuEle.attribute("type").setValue("自考");
}
}
//给name节点文本值为张三的添加属性sex:男
Iterator<Element> itName = stuEle.elementIterator("name");
while(itName.hasNext()){
Element nameEle = itName.next();
if(nameEle.getText().equals("张三")){
nameEle.addAttribute("sex","男");
}
}
System.out.println("修改成功");
}
}
//删除
public void delete(){
//查找根节点
Element root = doc.getRootElement();
//遍历studnet节点
Iterator<Element> Itstu = root.elementIterator("student");
while (Itstu.hasNext()) {
Element stuEle = Itstu.next();
if(stuEle.attributeValue("type")!=null){
if(stuEle.attributeValue("type").equals("保送")){
//通过父节点删除
stuEle.getParent().remove(stuEle);
}
}
}
System.out.println("删除成功");
}
}
分别使用DOM和DOM4j解析XML文件
需积分: 18 44 浏览量
2022-03-13
11:13:20
上传
评论
收藏 4KB ZIP 举报
远离bug,珍爱头发
- 粉丝: 3520
- 资源: 8
评论0