Java-Xml【DOM4J 实现对XML文档的增、删、改、查】


虽说是介绍基本操作,但是对XML的使用最多的就是增删改查,本文内容也是实际工作中常用到的方法。
下面是待解析的Xml文件内容:
zhangSan 23 male

【Java-Xml【DOM4J 实现对XML文档的增、删、改、查】】接着介绍如何使用dom4j实现对XML的操作:
public class Demo3 { @Test public void method1() throws Exception { // 创建解析器 SAXReader reader = new SAXReader(); //这个是用来读取文件内容的 Document doc = reader.read(new File("students.xml")); //指定要读取的文件 //System.out.println(doc.asXML()); //打印出文件 } //实现对XML文件的复制 @Test public void method2() throws Exception { // 得到Document SAXReader reader = new SAXReader(); Document doc = reader.read(new File("students.xml")); // 保存Document,指定将写入的目的文件(复制功能) XMLWriter writer = new XMLWriter(new FileOutputStream("students_copy.xml")); writer.write(doc); //开始写入 } //遍历Document @Test public void method3() throws Exception { // 要遍历文档,首先要得到Document对象 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("students.xml")); //获取根元素 Element root = doc.getRootElement(); //获取根元素中所有student元素 List stuEleList = root.elements("student"); // 循环遍历所有学生元素 for(Element stuEle : stuEleList) { //获取学生元素的number String number = stuEle.attributeValue("number"); //获取学生元素名为name的子元素的文本内容 String name = stuEle.elementText("name"); //获取学生元素名为age的子元素的文本内容 String age = stuEle.elementText("age"); //获取学生元素名为sex的子元素的文本内容 String sex = stuEle.elementText("sex"); System.out.println(number + ", " + name + ", " + age + ", " + sex); } } //添加元素 @Test public void method4() throws Exception { // 得到Document SAXReader reader = new SAXReader(); Document doc = reader.read(new File("src/students.xml")); //获取root元素 Element root = doc.getRootElement(); Element stuEle = root.addElement("student"); //添加了student元素 // 给stuEle添加属性,名为number,值为1003 stuEle.addAttribute("number", "1003"); // 分别为stuEle添加名为name、age、sex的子元素,并为子元素设置文本内容 stuEle.addElement("name").setText("wangWu"); stuEle.addElement("age").setText("18"); stuEle.addElement("sex").setText("male"); // 设置保存的格式化器1. \t,使用什么来完成缩进 2. true, 是否要添加换行 OutputFormat format = new OutputFormat("\t", true); format.setTrimText(true); //去掉空白 // 在创建Writer时,指定格式化器 XMLWriter writer = new XMLWriter(new FileOutputStream("src/students_copy.xml"), format); writer.write(doc); } //修改元素 @Test public void method5() throws Exception {// 得到Document SAXReader reader = new SAXReader(); Document doc = reader.read(new File("src/students_copy.xml")); //使用XPath找到符合条件的元素 // 查询student元素,条件是number属性的值为1003 Element stuEle = (Element) doc.selectSingleNode("//student[@number='ITCAST_1003']"); //修改stuEle的age子元素内容为81 stuEle.element("age").setText("81"); //修改stuEle的sex子元素的内容为female stuEle.element("sex").setText("female"); } //删除元素 @Test public void method6() throws Exception {// 得到Document SAXReader reader = new SAXReader(); Document doc = reader.read(new File("src/students_copy.xml")); // 查找student元素,条件是name子元素的文本内容为wangWu Element stuEle = (Element) doc.selectSingleNode("//student[name='wangWu']"); // 2. 获取父元素,使用父元素删除指定子元素 stuEle.getParent().remove(stuEle); } }






    推荐阅读