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
{/*** 增加:文档,标签 ,属性*/@Testpublic 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("执行结束!");}/*** 修改:属性值,文本*/@Testpublic 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("执行结束!");}/*** 删除:标签,属性*/@Testpublic 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、思维导图