对XML文档的修改与编写

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

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念