使用dom4工具:增删改xml文件(七)

x33g5p2x  于2021-12-28 转载在 其他  
字(2.4k)|赞(0)|评价(0)|浏览(278)
package dom4j_write;

import java.io.File;
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;

/**
 * 修改xml文件:	
 * 			添加:文档		标签		属性
 * 			修改:属性值		文本内容
 * 			删除:标签		属性
 * 
 * @author mzy
 *
 */
public class Demo03 {
	public static void main(String[] args) throws Exception{
		/**
		 * 添加:文档	标签		属性
		 */
		// 1.1 添加空文档
		Document doc = DocumentHelper.createDocument();
		
		// -------------------------------
		
		// 真正的操作
		Element conListElem = doc.addElement("contact-list"); // 但是根标签不能添加多个
		// 一层一层的加
		Element conElem = conListElem.addElement("contact");
		
		conElem.addElement("name");
		
		// 添加属性
		conElem.addAttribute("id", "001");
		conElem.addAttribute("name", "mzy");
		// -------------------------------
		
		// 1.2 把文档写出到xml文件中
		FileOutputStream out = new FileOutputStream("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("utf-8");
		
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(doc);
		
		/**
		 * 修改:属性值		文本内容
		 * 将contact的属性值id=001,修改为id=003	
		 * 在name标签中添加名字
		 */
		doc = new SAXReader().read(new File("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml"));
		
		// 修改属性值:method_1.先得到属性对象,再修改属性对象的值
		conElem = doc.getRootElement().element("contact");
		Attribute idAttr = conElem.attribute("id");
		idAttr.setValue("003");
		
		// 修改属性值:method_2.因为属性名不能重复,重复增加即覆盖
		// conElem.addAttribute("id", "003");
		
		// 修改文本
		Element nameElem = doc.getRootElement().element("contact").element("name");
		nameElem.setText("王五");
		
		// 把文档写出到xml文件中:必须重置IO流,不然会接着上次结束的位置写
		out = new FileOutputStream("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml");
		format = OutputFormat.createPrettyPrint();
		format.setEncoding("utf-8");
		
		
		/**
		 * 删除:标签		属性内容
		 * 将contact的属性值id=001,修改为id=003	
		 */
		// 1.1  删除标签
		conElem = doc.getRootElement().element("contact");
		// conElem.detach(); // 删除当前的标签
		// conElem.getParent().remove(conElem); // 获取父标签再删除子标签
		
		// 1.2 删除属性
		Attribute attr = doc.getRootElement().element("contact").attribute("id");
		attr.detach();
		
		writer = new XMLWriter(out, format);
		writer.write(doc);
		
	}
}

xml格式如下:

<?xml version="1.0" encoding="utf-8"?>

<contact-list> 
  <contact name="eric"> 
    <name>王五</name> 
  </contact> 
</contact-list>

相关文章