事先准备:使用DOM4j首先要引入jar包,可以去官网自行下载 放到到项目的src目录下右键 add as library即可
- XML文件
<students> <student> <name sex="男">张三</name> <age>20</age> <school>bdqn </school> </student> <student type="自考"> <name>李四</name> <age>22</age> <school>bdqn</school> </student> <student type="自考"> <name>王五</name> <age>20</age> <school>清华</school> </student></students>
- Student类
public class Student { private String name; private String age; private String school; public void showInfo(){ System.out.println("姓名:"+this.name+"\n年龄:"+this.age+"\n学校:"+this.school); System.out.println("***********"); }}
- XML解析类
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.*;import java.util.Iterator;public class stuDom4j { Document document=null; private String name,age,school; public void getDom(File file){ SAXReader reader=new SAXReader(); try { this.document=reader.read(file); } catch (DocumentException e) { e.printStackTrace(); } } public void showXML(){ Element rootEle = document.getRootElement(); Iterator<Element> itStu = rootEle.elementIterator(); while(itStu.hasNext()){ Element stuEle = itStu.next(); Iterator<Element> itName = stuEle.elementIterator("name"); while(itName.hasNext()){ Element nameEle = itName.next(); this.name= nameEle.getText(); } Iterator<Element> itAge = stuEle.elementIterator("age"); while(itAge.hasNext()){ Element ageEle = itAge.next(); this.age= ageEle.getText(); } 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(document); } catch (UnsupportedEncodingException | FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } System.out.println("保存成功"); } public void add(){ Element root=document.getRootElement(); Element stuEle = root.addElement("student"); stuEle.addAttribute("type","保送"); Element nameEle = stuEle.addElement("name"); nameEle.addText("王五"); Element ageEle = stuEle.addElement("age"); ageEle.addText("20"); Element schoolEle = stuEle.addElement("school"); schoolEle.addText("清华"); System.out.println("添加成功"); } public void modfiy()throws Exception{ Element root=document.getRootElement(); Iterator<Element> itStudent = root.elementIterator(); while (itStudent.hasNext()){ Element stuEle = itStudent.next(); if (stuEle.attributeValue("type")!=null) { if(stuEle.attributeValue("type").equals("保送")){ stuEle.attribute("type").setValue("自考"); } } 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 = document.getRootElement(); Iterator<Element> itStu = root.elementIterator(); while (itStu.hasNext()) { Element stuEle = itStu.next(); if (stuEle.attributeValue("type")!=null) { if(stuEle.attributeValue("type").equals("保送")){ stuEle.getParent().remove(stuEle); } } } System.out.println("删除成功"); }}
- 测试类
import java.io.File;public class stuDom4jTest { public static void main(String[] args) throws Exception { stuDom4j stuDom4j=new stuDom4j(); File file=new File("src/exam2/Student.xml"); stuDom4j.getDom(file); stuDom4j.showXML();stuDom4j.add(); stuDom4j.modfiy(); stuDom4j.delete(); stuDom4j.save(file); }}