必知的技术知识:java基础73dom4j修改xml里面的内容(网页知识)

简介: 必知的技术知识:java基础73dom4j修改xml里面的内容(网页知识)

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.html


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 //代码效果参考: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

效果图


原文出自:


欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!)

相关文章
|
1天前
|
XML 存储 JavaScript
XML DOM - 访问节点
`getElementsByTagName()` 方法用于访问XML文档中的特定节点。节点可按三种方式获取:使用该方法、遍历节点树或导航节点关系。`getElementsByTagName()` 返回一个节点列表,类似数组,可用于处理多个匹配节点。例如,代码加载 &quot;books.xml&quot; 到 `xmlDoc`,再将结果保存到变量 `x`。
|
1天前
|
XML Web App开发 JavaScript
XML DOM 解析器
**XML DOM解析器**是浏览器内置的工具,用于将XML转换为JavaScript对象,便于操作。通过XMLHttpRequest加载XML文档,如`books.xml`,创建HTTP请求并获取响应后,将XML响应转换为DOM对象,赋值给`xmlDoc`,允许使用JS遍历和修改XML结构。在不同浏览器中,可能使用XMLHttpRequest或ActiveXObject。
|
2天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
该文介绍了如何遍历XML文档的节点树。通过示例代码展示了如何使用DOM解析XML,遍历并打印出`&lt;book&gt;`元素的所有子节点名称及其文本值,从而实现对XML数据的提取和处理。
|
1天前
|
XML Web App开发 JavaScript
XML DOM 解析器
**XML DOM解析器**是浏览器内置的工具,用于将XML转换为JavaScript对象,便于操作。通过XMLHttpRequest或ActiveXObject加载XML文档,如`books.xml`,创建HTTP请求并获取响应后,将XML转换为`responseXML`,形成DOM树,允许开发者遍历、修改节点。
|
2天前
|
XML JavaScript 数据格式
XML DOM 浏览器差异
XML DOM在浏览器中解析时,空格和换行处理不一致。IE不将这些视为文本节点,而其他浏览器则会。例如,一个包含CR/LF和空格的XML文档在IE中可能显示4个子节点,但在其他浏览器中显示9个。`documentElement.childNodes.length`的值会因浏览器不同而变化。
|
2天前
|
XML Java 数据库连接
面试必备!Java核心技术100+面试题
面试必备!Java核心技术100+面试题
|
3天前
|
存储 安全 Java
必知的技术知识:java8之stream
必知的技术知识:java8之stream
|
XML 数据格式
Java-Dom4jHelper工具类
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.
1242 0
|
1天前
|
Java 数据处理 调度
Java多线程编程入门指南
Java多线程编程入门指南
|
2天前
|
监控 安全 算法
如何有效地处理Java中的多线程
如何有效地处理Java中的多线程