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();
}
}