1、DOM4J对XML文件进行增删改操作
实现代码
1 package com.shore.code;
2
3 import java.io.File;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
6
7 import org.dom4j.Attribute;
8 import org.dom4j.Document;
9 import org.dom4j.DocumentHelper;
10 import org.dom4j.Element;
11 import org.dom4j.io.OutputFormat;
12 import org.dom4j.io.SAXReader;
13 import org.dom4j.io.XMLWriter;
14 import org.junit.Test;
15
16 /**
17 * @author DSHORE / 2018-9-3
18 *
19 */
20 /*
21 * 修改xml内容
22 * 增加:文档,标签,属性
23 * 修改:属性值,文本
24 * 删除:标签,属性
25 * */
26 public class Demo3 {
27 /*
28 * 增加:文档,标签,属性
29 * */
30 @Test
31 public void test1() throws IOException{
32 /*
33 *创建文档
34 * */
35 Document doc=DocumentHelper.createDocument();
36 Element rootelem=doc.addElement("contactList");
37 Element contactElem=rootelem.addElement("contact");
38 Element nameEle = contactElem.addElement("name");
39 nameEle.addEntity("name", "张三");//添加实体内容
40 Element ageEle = contactElem.addElement("age");
41 ageEle.addComment("张三");//添加注释
42 /*
43 * 增加属性
44 * */
45 contactElem.addAttribute("id","001");
46 contactElem.addAttribute("name","zhangsan");
47 //1.创建输出流通道
48 FileOutputStream out=new FileOutputStream("F:/contact.xml");
49 //设置写入contact.xml文件的内容/标签格式(俗称:美观格式)
50 OutputFormat format=OutputFormat.createPrettyPrint();
51 //设置编码格式
52 format.setEncoding("utf-8");
53 //2.创建写出的对象,把修改后的Document对象写出到xml中
54 XMLWriter write=new XMLWriter(out,format);
55 //3.写出对象
56 write.write(doc);
57 //4.关闭资源
58 write.close();
59 }
60 /*
61 * 修改:属性值,文本
62 * */
63 @Test
64 public void test2() throws Exception{
65 //1.创建并读取一个Document对象
66 Document doc=new SAXReader().read(new File("./src/contact.xml"));
67 /*
68 * 方案一:修改属性值 1.得到标签对象 2.得到属性对象 3.修改属性值
69 * */
70 //2.得到标签对象
71 Element contatcElem=doc.getRootElement().element("contact");
72 //3.得到属性对象
73 Attribute idAttr=contatcElem.attribute("id");
74 //4.修改属性值
75 idAttr.setValue("005");
76 /*
77 * 方案二:修改属性值
78 * */
79 //2.得到标签对象
80 Element contatcElem2=doc.getRootElement().element("contact");
81 //3.通过增加同名的属性的方法,修改属性值
82 contatcElem2.addAttribute("id","006");
83 /*
84 * 修改文本: 1.得到标签 2.修改文本
85 * */
86 Element nameElement=doc.getRootElement().element("contact").element("name");
87 nameElement.setText("王五");
88 //1.创建输出流通道
89 FileOutputStream out=new FileOutputStream("F:/contact.xml");
90 OutputFormat format=OutputFormat.createPrettyPrint();//设置contact.xml文件格式(俗称:美观格式)
91 format.setEncoding("utf-8");//设置编码格式
92 //2.创建写出的对象
93 XMLWriter write=new XMLWriter(out,format);
94 //3.写出对象
95 write.write(doc);
96 //4.关闭资源
97 write.close();
98 }
99 /*
100 * 删除:标签,属性
101 * */
102 @Test
103 public void test3() throws Exception{
104 Document doc=new SAXReader().read(new File("./src/contact.xml"));
105 /*
106 * 删除标签: 1.得到标签 2.删除标签对象
107 * */
108 //得到标签
109 Element ageElement=doc.getRootElement().element("contact").element("age");
110 //删除标签对象
111 //ageElement.detach();
112 ageElement.getParent().remove(ageElement);//和上面的效果是一样的
113 /*
114 * 2.删除属性 1.得到属性对象 2.删除属性
115 * */
116 //得到属性对象
117 //得到第二个contact标签
118 Element contactElement=(Element)doc.getRootElement().elements().get(1);//get()里面填0代表第一个contact标签,填1代表第二contact标签。相当于数组的下标
119 //得到属性对象
120 Attribute idAttribute=contactElement.attribute("id");
121 //删除属性
122 idAttribute.detach();
123 //idAttribute.getParent().remove(idAttribute);//和上面的效果是一样的
124 FileOutputStream out=new FileOutputStream("F:/contact.xml");
125 OutputFormat format=OutputFormat.createPrettyPrint();
126 format.setEncoding("utf-8");
127 XMLWriter write=new XMLWriter(out,format);
128 write.write(doc);
129 write.close();
130 }
131 }
源文档(contact.xml)
1 <?xml version="1.0" encoding="utf-8"?>
2 <contactList>
3 <contact id="001" sex="男">
4 <name>张三</name>
5 <age>18</age>
6 <phone>15779593710</phone>
7 <email>872855221@qq.com</email>
8 <qq>872855221</qq>
9 <abc>
10 <a> </a>
11 </abc>
12 </contact>
13 <contact id="038">
14 <name>李四</name>
15 <age>20</age>
16 <phone>1314580</phone>
17 <email>12580@qq.com</email>
18 <qq>832144529</qq>
19 </contact>
20 </contactList>
效果图
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/9561848.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |