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



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值