黑马程序员技术交流社区
标题:
XML解析,使用Dom4j增加修改删除xml内容
[打印本页]
作者:
杨杰锋
时间:
2016-10-14 12:04
标题:
XML解析,使用Dom4j增加修改删除xml内容
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;
public class WriteDemo3 {
/**
*使用Dom4j增加修改删除xml内容
* @throws Exception
*/
@Test
public void testAdd() throws Exception{
//在内存中修改Document对象
//1.创建Document
Document doc = DocumentHelper.createDocument();
//2.添加标签
//2.1添加跟标签
Element rootElem = doc.addElement("contacts");
//2.2在根标签添加子标签
Element contanctElem = rootElem.addElement("contact");
contanctElem.addAttribute("id", "001");
Element nameElem = contanctElem.addElement("name");
nameElem.setText("杨杰锋");
//把document写出到xml文件中
FileOutputStream fos = new FileOutputStream("E:\\contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer = new XMLWriter(fos,format);
writer.write(doc);
writer.close();
System.out.println("写出成功");
}
/**
*修改属性值,文本
* @throws Exception
*/
@Test
public void testUpdate() throws Exception{
Document document = new SAXReader().read(".\\src\\contact.xml");
//在内存中修改Document对象
//方式一://1修改属性
//1.1得到属性Suzanne的标签对象
Element contaceElem = document.getRootElement().element("contact");
//1.2得到属性
/*Attribute idAttr = contaceElem.attribute("id");
idAttr.setValue("003");
Element nameElem = contaceElem.element("name");
nameElem.setText("杨");*/
//方式二:天假一个同名属性覆盖之前的属性
contaceElem.addAttribute("id", "004");
FileOutputStream fos = new FileOutputStream("E:\\contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer = new XMLWriter(fos,format);
writer.write(document);
writer.close();
}
/**
* 删除属性,值
* @throws Exception
*/
@Test
public void testDel() throws Exception{
Document document = new SAXReader().read(".\\src\\contact.xml");
/*//需求:删除id值为2的contact标签
//先得到所有的contact
List<Element> list = document.getRootElement().elements();
//遍历几个
for (Element element : list) {
//id属性值是否为2
if(element.attributeValue("id").equals("2")){
//删除标签
element.detach();
break;
}
}*/
//需求:删除第一个contact标签的id属性
//找到contac对象
Element contactElem = document.getRootElement().element("contact");
//找到id属性
Attribute idAttr = contactElem.attribute("id");
//调用方法删除属性
idAttr.detach();
FileOutputStream fos = new FileOutputStream("E:\\contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer = new XMLWriter(fos,format);
writer.write(document);
writer.close();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2