使用 dom4j 实现在特定位置添加节点的操作| 学习笔记

简介: 快速学习使用 dom4j 实现在特定位置添加节点的操作。

开发者学堂课程【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

相关文章
|
3月前
|
XML JavaScript 数据格式
DOM中的节点分为哪几种几类型
DOM中的节点分为哪几种几类型
31 0
|
22天前
|
JavaScript 前端开发 开发者
DOM节点类型
DOM节点类型
10 0
|
3月前
|
JavaScript 前端开发
JavaScript:DOM节点
JavaScript:DOM节点
22 0
|
3月前
|
JavaScript 小程序
遍历类数组之获取多个dom节点并遍历
遍历类数组之获取多个dom节点并遍历
|
9月前
|
XML JavaScript 前端开发
|
4月前
|
JavaScript 测试技术
html2canvas将document DOM节点转换为图片,并下载到本地
html2canvas将document DOM节点转换为图片,并下载到本地
|
4月前
|
JavaScript
【讲人话】Angular如何通过@ViewChildren获取实时渲染的动态DOM节点元素(@ViewChild只能获取静态的固定DOM节点)
【讲人话】Angular如何通过@ViewChildren获取实时渲染的动态DOM节点元素(@ViewChild只能获取静态的固定DOM节点)
|
7月前
|
存储 XML JavaScript
前端(十四)——DOM节点操作手册:你需要了解的一切
前端(十四)——DOM节点操作手册:你需要了解的一切
|
8月前
|
JavaScript 前端开发
前端项目实战壹佰壹拾玖react-admin+material ui-react-admin之SimpleList中primaryText使用三返回dom节点
前端项目实战壹佰壹拾玖react-admin+material ui-react-admin之SimpleList中primaryText使用三返回dom节点
40 0
|
8月前
|
JavaScript
获取dom节点与页面顶部的高度 +平滑的自动上拉到页面顶部
获取dom节点与页面顶部的高度 +平滑的自动上拉到页面顶部