package com.rlovep.dom4j;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
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;
/**
*
* @ClassName: WriteXml
* @Description: 修改xml的内容:增删减;
* @author peace w_peace@163.com
* @date 1 Oct 2015 10:52:49 am
*
*/
public class WriteXml {
/**
*
* @Title: addXml
* @Description: 增加xml文档,增加标签,增加属性;
* @throws Exception
* @return:void
* @throws
* @author peace w_peace@163.com
*/
@Test
public void addXml() throws Exception{
//创建文档
Document doc=DocumentHelper.createDocument();
//增加根标签
Element rootelem=doc.addElement("Studentlist");
//增加子标签
Element stu1=rootelem.addElement("study");
Element name1=stu1.addElement("name");
Element stu2=rootelem.addElement("study");
Element name2 = stu2.addElement("name");
//怎加属性
stu1.addAttribute("id", "001");
stu2.addAttribute("id", "002");
//创建输出流
FileOutputStream out=new FileOutputStream("./src/writeStu.xml");
//输出xml的格式
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
//创建写出对象
XMLWriter writer=new XMLWriter(out,format);
//写入doc
writer.write(doc);
writer.close();
}
/**
*
* @Title: changexml
* @Description: 修改xml的文本和属性
* @throws Exception
* @return:void
* @author peace w_peace@163.com
*/
@Test
public void changexml() throws Exception{
Document doc = new SAXReader().read("./src/student.xml");
/**
* 修改属性
* 方法1:1.得到标签对象 2.得到属性对象 3修改属性值
*/
//获得属性
Attribute id1=doc.getRootElement().element("student").attribute("id");
//修改
id1.setValue("007");
//方法二:1.得到标签对象 2通过增加同名属性修改
Element stu2=(Element) doc.getRootElement().elements("student").get(1);
//增加同名属性
stu2.addAttribute("id", "008");
/**
* 修改文本
* 1.得到标签对象 2,设置文本
*/
Element name=stu2.element("name");
name.setText("蘅嵘");
//创建输出流
FileOutputStream out=new FileOutputStream("./src/student.xml");
//输出xml的格式
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
//创建写出对象
XMLWriter writer=new XMLWriter(out,format);
//写入doc
writer.write(doc);
writer.close();
}
/**
*
* @Title: deletXml
* @Description: 删除标签和属性测试
* @return:void
* @throws
* @author peace w_peace@163.com
*/
@Test
public void deletXml() throws Exception{
//创建文档
Document doc=DocumentHelper.createDocument();
//增加根标签
Element rootelem=doc.addElement("Studentlist");
//增加子标签
Element stu1=rootelem.addElement("study");
Element name1=stu1.addElement("name");
Element stu2=rootelem.addElement("study");
Element name2 = stu2.addElement("name");
//怎加属性
stu1.addAttribute("id", "001");
stu2.addAttribute("id", "002");
/**
* 删除标签 1得到标签对象 2删除标签对象
*/
Element name=doc.getRootElement().element("study").element("name");
//方法1 自杀
//name.detach();
//方法二 他杀
name.getParent().remove(name);
/**
* 删除属性 1.得到属性对象 3删除属性
*/
Attribute id1=doc.getRootElement().element("study").attribute("id");
//方法1 自杀
id1.detach();
//方法二 他杀
//id1.getParent().remove(id1);
//创建输出流
FileOutputStream out=new FileOutputStream("./src/deletStu.xml");
//输出xml的格式
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
//创建写出对象
XMLWriter writer=new XMLWriter(out,format);
//写入doc
writer.write(doc);
writer.close();
}
}