开发者学堂课程【XML入门 :使用 dom4j 实现在特定位置添加节点的操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/37/detail/864
使用 dom4j 实现在特定位置添加节点的操作
内容介绍
一、在第一个 p1 下面的 age 标签之前添加<school>ecit.edu.cn</school>
二、具体步骤
三、总结步骤
一、在第一个 p1 下面的 age 标签之前添加<school>ecit.edu.cn</school>
1.首先添加一个需求,在第一个 p1 下面的 age 标签之前添加
<school>ecit.edu.cn</school>
<person>
<p1>
<name>zhangsan</name>
<school>ecit</school>
<age>20<age>
<sex>nv</sex>
</p1>
<p1>
<name>list</name>
<age>30</age>
</p1>
</person>
2.操作步骤:
首先在 Java 创建一个方法,这个方法就是在特定位置添加节点操作。
接着写一个 public static void addAgeBefore() throws Exception{}
(1) 写上操作步骤
(2) 创建解析器
(3) 得到 document
(4) 得到根节点
(5) 获取到第一个 p1
(6) 获取 p1 下面的所有的元素
//在第一个 p1 下的 age 前添加,先获取 age,要注意的是 age 在 p1 下的第二个位置,等于要加一个元素,把 age 位置占据后,在第二个位置加一个元素即可。首先要注意当实现在特定位置下时,第一步就是获取 p1 的所有元素,是利用Elements()的方法获取,这里面没有参数,这个方法不会返回所有元素,返回的是 list 的集合。这涉及到 list 操作。
①在 list 里面有没有在特定位置添加元素的方法?
首先在 list 里面添加元素的方法是 add 方法,看一下文档 jdk,查找一下 list,注意这里加了 upo 方向。
②有没有向特定位置添加元素的方法?
第二个就是,第一个参数是一个位置或者下标,第二个参数是元素,这个下标从0开始,所以这里面可以使用这个方法,这个方法叫做 add。然后在特定位置下加元素。这个方法里的第一个参数是一个位置或者一个下标,但下标是从0开始,第二个参数就是要添加的元素,然后这个向特定位置下加元素,比如向 age 之前添加,相当于在特定的位置添加。首先这个位置是2,下标为1,然后在这个位置直接添加一个元素,再进行下一步。
①elements( )方法返回 1ist 集合
②使用 list 里面的方法,在特定位盟添加元素
③创建元素在元素下面创建文本
④回写 xml
二、具体步骤
创建解析器:
SAXReader saxReader =new SAXReader();
得到 document:
Document document =SAXReader.read(“src/p1.xml”);
得到根节点:
Element root =document.getRootElement();
获取到第一个 p1:
Element p1 = root. element("p1");
获取p1下面所有的元素:
List<Element> list = p1. elements();
创建元素使用:
Element school = DocumentHelper.creatElement(“school”);
//使用 DocumentHelper 帮助类里面有 creatElement 方法,这表示直接创建一个标签,其返回的是 Element,这就是创建了 school 标签。
在 school 下面创建文本:
school . setText(“ecit”);
//这样就表示创建的标签 school 里就有文本 ecit
在特定位置添加元素:
list. add (1, school);
//注意:第一个是添加的位置或者下标为1,第二个添加的是元素,但现在是在特定的位置添加元素就没有。所以当在末尾添加时不需要创建,但在特定位置添加元素时才需要创建,不然没有元素,无法添加。因此在添加元素之前需要创建元素。
回写xml(以上操作是在内存中,是只存在于内存里的例子,现在这步操作是把它加入到文档里去,最终回写 xml)
QutputFormat format = OutputFormat.createPrettyPrint();
格式化类:
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/p1.xml"), format);
xmlWriter.write ( document) ;
写好文档,进行关流:
xmlWriter.close();
关流:
强调:首先 XMLWriter 是 org.dom4j.io.XMLWriter 导包。
写好修改代码后,在主函数中添加 addAgeBefore();。首先看原始文件 age 之前什么都没有,运行 Java 文件后,返回 xml 文件,文件将增加<school>ecit</school>
。
三、总结步骤
1、创建解析器
2、得到 document
3、得到根节点
4、获取到第一个 p1
5、获取 p1 下面的所有的元素
(1) elements()方法返回 list 集合
(2) 使用 list 里面的方法,在特定位置添加元素
(3) 创建元素在元素下面创建文本
(4) add(int index, E element)
①第一个参数是位置下标,从0开始
②第二个参数是要添加的元素
6、回写 xml