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.删除标签对象
//代码效果参考:http://hnjlyzjd.com/xl/wz_25316.html107 /
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 //代码效果参考:http://hnjlyzjd.com/xl/wz_25314.html
//删除属性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 [/span>contactList
3 [/span>contact id="001" sex="男"
4 [/span>name
5 [/span>age
6 [/span>phone
9 [/span>abc
10 [/span>a
11
12
13 [/span>contact id="038"
14 [/span>name
15 [/span>age
16 [/span>phone
19
20
效果图
原文出自:
欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!)