Dom4j工具,是非官方的,不在jdk中。
使用步骤:
1)导入dom4j的核心包。 dom4j-1.6.1.jar
2)编写Dom4j读取xml文件的代码
1、更新XML
1.1、写出内容到xml文档
package com.rk.xml.g_dom4j_write; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * 第一个写出内容到xml文档 * @author RK * */ public class Demo01 { public static void main(String[] args) throws Exception { //一、读取或创建一个Document对象 Document doc = new SAXReader().read(new File("./src/animals.xml")); //二、修改Document对象内容 //三、把修改后的Document对象写出到xml文档中 //指定文件输出的位置 FileOutputStream outStream = new FileOutputStream("D:/rk/result.xml"); //1.创建写出对象 XMLWriter writer = new XMLWriter(outStream); //2.写出Document对象 writer.write(doc); //3.关闭流 writer.close(); System.out.println("执行结束!"); } }
1.2、写出内容到xml文档的细节
package com.rk.xml.g_dom4j_write; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * 讨论写出内容到xml文档的细节 * @author RK * */ public class Demo02 { public static void main(String[] args) throws Exception { Document doc = new SAXReader().read(new File("./src/animals2.xml")); /** * 1.指定写出的格式 */ // OutputFormat format = OutputFormat.createCompactFormat();//紧凑的格式.去除空格换行.项目上线的时候 OutputFormat format = OutputFormat.createPrettyPrint();//漂亮的格式.有空格和换行.开发调试的时候 /** * 2.指定生成的xml文档的编码 * 同时影响了xml文档保存时的编码 和 xml文档声明的encoding的编码(xml解析时的编码) * 结论: 使用该方法生成的xml文档避免中文乱码问题。 */ format.setEncoding("UTF-8"); //指定文件输出的位置 FileOutputStream outStream = new FileOutputStream("D:/rk/result.xml"); //1.创建写出对象 XMLWriter writer = new XMLWriter(outStream, format); //2.写出Document对象 writer.write(doc); //3.关闭流 writer.close(); System.out.println("执行结束!"); } }
1.3、修改xml内容:添加、修改、删除
package com.rk.xml.g_dom4j_write; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Node; import org.dom4j.Element; import org.dom4j.Attribute; import org.dom4j.Text; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.dom4j.io.OutputFormat; import org.junit.Test; /** * 修改xml内容 * 增加:文档,标签 ,属性 * 修改:属性值,文本 * 删除:标签,属性 * @author RK * */ public class Demo03 { /** * 增加:文档,标签 ,属性 */ @Test public void testAdd() throws Exception { //1.创建文档 Document doc = DocumentHelper.createDocument(); //2.增加标签 Element rootElement = doc.addElement("ContactList"); Element contactElement = rootElement.addElement("Contact"); Element nameElement = contactElement.addElement("Name"); nameElement.setText("小明"); //3.增加属性 contactElement.addAttribute("id", "c001"); contactElement.addAttribute("region", "北京"); //把修改后的Document对象写出到xml文档中 FileOutputStream out = new FileOutputStream("D:/rk/contact.xml"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(out,format); writer.write(doc); writer.close(); System.out.println("执行结束!"); } /** * 修改:属性值,文本 */ @Test public void testModify() throws Exception { Document doc = new SAXReader().read(new File("./src/animals.xml")); /** * 方案一: 修改属性值 1.得到标签对象 2.得到属性对象 3.修改属性值 */ //1.1 得到标签对象 Element catElement = doc.getRootElement().element("Cat"); //1.2 得到属性对象 Attribute catAttr = catElement.attribute("id"); //1.3 修改属性值 catAttr.setValue("c100"); /** * 方案二: 修改属性值 */ //2.1 得到标签对象 Element dogElement = doc.getRootElement().element("Dog"); //2.2 通过增加同名属性的方法,修改属性值 dogElement.addAttribute("id", "d100"); /** * 修改文本 1.得到标签对象 2.修改文本 */ Element nameElement = doc.getRootElement().element("Cat").element("Home"); nameElement.setText("第六宇宙"); FileOutputStream out = new FileOutputStream("D:/rk/Animals.xml"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(out,format); writer.write(doc); writer.close(); System.out.println("执行结束!"); } /** * 删除:标签,属性 */ @Test public void testDelete() throws Exception { Document doc = new SAXReader().read(new File("./src/animals.xml")); /** * 1.删除标签 1.1 得到标签对象 1.2 删除标签对象 */ // 1.1 得到标签对象 Element nameElement = doc.getRootElement().element("Cat").element("Home"); //1.2 删除标签对象 nameElement.detach(); // nameElement.getParent().remove(nameElement); /** * 2.删除属性 2.1得到属性对象 2.2 删除属性 */ Element catElement = doc.getRootElement().element("Cat"); //2.1得到属性对象 Attribute idAttr = catElement.attribute("id"); //2.2 删除属性 idAttr.detach(); // idAttr.getParent().remove(idAttr); FileOutputStream out = new FileOutputStream("D:/rk/animals.xml"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(out,format); writer.write(doc); writer.close(); System.out.println("执行结束!"); } }
2、思维导图
时间: 2024-10-05 04:33:12