这是使用DOM4j解析来对xml文件进行的一个简单的增、删、改、查操作
DOM4j需要一个jar包,不是JDK自带的
package com.DOM4j;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4jTest {
public static void main(String[] args) throws Exception {
//创建DOM4j对象
SAXReader reader=new SAXReader();
//将一个xml文件转换为document对象
Document doc=reader.read("xml/student.xml");
//
// //查询
// List<Student> list=select(doc);
// for(Student stu:list){
// System.out.println(stu.getId()+","+stu.getName()+","+stu.getSex()+","+stu.getAge()+","+stu.getClassNO()+","+stu.getScore());
// }
//添加
// add(doc,new Student("12005","玲玲","女",20,"IBM12002",89.6));
//删除
// delete(doc,"12004");
//修改
update(doc,new Student("12003","甜甜","女",20,"IBM12002",89.6));
}
//解析document对象
public static List select(Document document){
List<Student> list=new ArrayList<Student>();
Element root=document.getRootElement();//得到根节点
//获得所有名字为student的节点
List allStu=root.elements();
for(int i=0;i<allStu.size();i++){
Element stu=(Element)allStu.get(i);//获得第i个student节点
String stuId=stu.attributeValue("stuID");
String name=stu.element("name").getText();
String sex=stu.element("sex").getText();
String age=stu.element("age").getText();
String classNO=stu.element("classno").getText();
String score=stu.element("score").getText();
Student s=new Student(stuId,name,sex,Integer.parseInt(age),classNO,Double.parseDouble(score));
list.add(s);
// System.out.println(stuId+name+sex+age+classNO+score);
}
return list;
}
//添加
public static void add(Document doc,Student stu) throws Exception{
Element root=doc.getRootElement();//获得根节点
Element student=DocumentHelper.createElement("Student");//在根节点下创建了一个学生节点
student.addAttribute("stuID", stu.getId());//属性
Element name_node=DocumentHelper.createElement("name");//创建名字节点
name_node.setText(stu.getName());
student.add(name_node);
Element sex_node=DocumentHelper.createElement("sex");//创建性别节点
sex_node.setText(stu.getSex());
student.add(sex_node);
Element age_node=DocumentHelper.createElement("age");//创建年龄节点
age_node.setText(stu.getAge()+"");
student.add(age_node);
Element classNO_node=DocumentHelper.createElement("classno");//创建班级节点
classNO_node.setText(stu.getClassNO());
student.add(classNO_node);
Element score_node=DocumentHelper.createElement("score");//创建学分节点
score_node.setText(stu.getScore()+"");
student.add(score_node);
root.add(student);
//转换
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer=new XMLWriter(new FileOutputStream("xml/student.xml"),format);
writer.write(doc);
}
//删除
public static void delete(Document doc,String stuID) throws Exception{
//删除操作:根据学号去查找到相应的学生,进行删除
Element root=doc.getRootElement();//获得根节点
List list=root.elements("student");//获得所有的student节点
for(int i=0;i<list.size();i++){
Element stu_node=(Element) list.get(i);//得到第i个student节点
String stuid=stu_node.attribute("stuID").getText();//得到属性值
System.out.println(stuid);
if(stuid.equals(stuID)){
root.remove(stu_node);
}
}
//转换
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer=new XMLWriter(new FileOutputStream("xml/student.xml"),format);
writer.write(doc);
}
//修改
public static void update(Document doc,Student stu) throws Exception{
//修改操作:根据学号去查找到相应的学生,进行修改
Element root=doc.getRootElement();//得到根节点
List list=root.elements("student");//获得所有的student节点
for(int i=0;i<list.size();i++){
Element stu_node=(Element)list.get(i);//获得第i个student节点
String stuid=stu_node.attributeValue("stuID");//获得属性值
System.out.println(stuid);
if(stuid.equals(stu.getId())){
Element name_node=stu_node.element("name");
name_node.setText(stu.getName());
Element sex_node=stu_node.element("sex");
sex_node.setText(stu.getSex());
Element age_node=stu_node.element("age");
age_node.setText(stu.getAge()+"");
Element classNO_node=stu_node.element("classno");
classNO_node.setText(stu.getClassNO());
Element score_node=stu_node.element("score");
score_node.setText(stu.getScore()+"");
}
}
//转换
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer=new XMLWriter(new FileOutputStream("xml/student.xml"),format);
writer.write(doc);
}
}