Dom4j修改XML文档:
1.写出内容到XML文档
XMLWriter writer = new XMLWriter(OutputStream,OutputFormat);
writer.write(DOcument);
2.修改XML文档的API
增加:文档、标签、属性
DocumentHelper.createDocument() 增加文档
addElement("名称") 增加标签
addSttribute("名称","值") 增加属性
修改:属性值、文本
属性值:
idAttr.setValue("值"); 修改属性值
contactElem.addAttribute("id","004"); 通过增添同名属性来修改属性值
文本:
nameElem.setText("李四"); 修改文本
删除:标签,属性
ageElem.detach();//2.1 删除标签对象
ageElem.getParent().remove(ageElem);//2.2删除标签对象
idAttr.detach();//3.1 删除属性
idAttr.getParent().remove(idAttr);//3.2
contact.xml
<?xml version="1.0" encoding="GBK"?> <contactList> <contact id="001"> <name>张三</name> <age>20</age> <phone>1234567</phone> <email>1234</email> <qq>222</qq> </contact> <contact id="002"> <name>lisi</name> <age>20</age> <phone>1234567</phone> <email>1234</email> <qq>222</qq> </contact> </contactList>
主程序:Demo_Write.java
package gz.itcast.a_dom4j_read; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.junit.Test; /* * 写内容到XML文件 */ public class Demo_Write { public static void main(String[] args) throws Exception { //一、读取的XML文件 Document doc = new SAXReader().read(new File("./src/contact.xml")); /* * 修改XML内容 */ //二、修改Document对象内容 /* * 在下面用三个方法分别写出了对XML文档的修改 * 增加:文档、标签,属性 * 修改:属性值,文本 * 删除:标签,属性 */ //三、将修改后的文件写到一个文件中去 //指定文件输出的位置 FileOutputStream out = new FileOutputStream("f:contact.xml"); /* * (1).指定写出的格式 */ //OutputFormat format = OutputFormat.createCompactFormat();//紧凑的格式:(无空格和换行)项目上线时用 OutputFormat format = OutputFormat.createPrettyPrint();//漂亮的格式:(有空格和换行)开发调试时用 /* * (2).指定生成的XML文件的编码:该方法避免了生成的XML文档出现中文乱码的问题 */ format.setEncoding("UTF-8"); //1.创建写出对象 XMLWriter writer = new XMLWriter(out,format); //2.写出对象 writer.write(doc); //3.关闭流 writer.close(); } /* * 修改XML内容 * 增加:文档、标签,属性 * 修改:属性值,文本 * 删除:标签,属性 */ //增加:标签,属性 @Test public void test1() throws Exception { Document doc = DocumentHelper.createDocument();//1.创建一个文档 Element rootElem = doc.addElement("contactList");//2.创建标签 Element contactELem = rootElem.addElement("contact");//创建子标签 contactELem.addAttribute("id","001"); //3.添加属性 contactELem.addAttribute("name","张三"); //三、输出XML文件 FileOutputStream out = new FileOutputStream("f:/contact1.xml"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(out,format); writer.write(doc); writer.close(); } //修改:属性值,文本 @Test public void test2() throws Exception { Document doc = new SAXReader().read(new File("./src/contact.xml")); //修改属性值有两个方案; // //方案一:步骤:1.拿到标签对象,2.得到属性对象,3.修改属性值 // Element contactElem = doc.getRootElement().element("contact");//1.拿到标签对象, // Attribute idAttr = contactElem.attribute("id");//2.得到属性对象 // idAttr.setValue("003");//3.修改属性值 //方案二:步骤:1.拿到标签对象,2.通过增添同名属性来修改属性值 Element contactElem = doc.getRootElement().element("contact");//1.拿到标签对象 contactElem.addAttribute("id","004");//2.通过增添同名属性来修改属性值 //修改文本:步骤:1.得到标签对象,2.修改文本 Element nameElem = doc.getRootElement().element("contact").element("name"); nameElem.setText("李四"); FileOutputStream out = new FileOutputStream("f:/contact2.xml"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(out,format); writer.write(doc); writer.close(); } //删除:标签,属性 @Test public void test3() throws Exception { Document doc = new SAXReader().read(new File("./src/contact.xml")); //删除标签:步骤:1.得到标签对象,2.删除标签对象 Element ageElem = doc.getRootElement().element("contact").element("age");//1.得到标签对象 // ageElem.detach();//2.1 删除标签对象 ageElem.getParent().remove(ageElem);//2.2删除标签对象 //删除属性:步骤:1.得到标签,2.得到标签的属性对象,3.删除属性 Element contactElem = (Element)doc.getRootElement().elements("contact").get(1);//得到第二个contact标签 Attribute idAttr = contactElem.attribute("id");//2.得到标签的属性对象 // idAttr.detach();//3.1 删除属性 idAttr.getParent().remove(idAttr);//3.2 FileOutputStream out = new FileOutputStream("f:/contact3.xml"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(out,format); writer.write(doc); writer.close(); } }