必知的技术知识: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

效果图


原文出自:


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

相关文章
|
监控 Cloud Native Java
Quarkus 云原生Java框架技术详解与实践指南
本文档全面介绍 Quarkus 框架的核心概念、架构特性和实践应用。作为新一代的云原生 Java 框架,Quarkus 旨在为 OpenJDK HotSpot 和 GraalVM 量身定制,显著提升 Java 在容器化环境中的运行效率。本文将深入探讨其响应式编程模型、原生编译能力、扩展机制以及与微服务架构的深度集成,帮助开发者构建高效、轻量的云原生应用。
1136 44
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
932 1
|
安全 Java 编译器
new出来的对象,不一定在堆上?聊聊Java虚拟机的优化技术:逃逸分析
逃逸分析是一种静态程序分析技术,用于判断对象的可见性与生命周期。它帮助即时编译器优化内存使用、降低同步开销。根据对象是否逃逸出方法或线程,分析结果分为未逃逸、方法逃逸和线程逃逸三种。基于分析结果,编译器可进行同步锁消除、标量替换和栈上分配等优化,从而提升程序性能。尽管逃逸分析计算复杂度较高,但其在热点代码中的应用为Java虚拟机带来了显著的优化效果。
420 4
|
Java API Maven
2025 Java 零基础到实战最新技术实操全攻略与学习指南
本教程涵盖Java从零基础到实战的全流程,基于2025年最新技术栈,包括JDK 21、IntelliJ IDEA 2025.1、Spring Boot 3.x、Maven 4及Docker容器化部署,帮助开发者快速掌握现代Java开发技能。
1934 1
|
Java 测试技术 API
2025 年 Java 开发者必知的最新技术实操指南全览
本指南涵盖Java 21+核心实操,详解虚拟线程、Spring Boot 3.3+GraalVM、Jakarta EE 10+MicroProfile 6微服务开发,并提供现代Java开发最佳实践,助力开发者高效构建高性能应用。
1597 5
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
544 3
|
安全 Cloud Native Java
Java 模块化系统(JPMS)技术详解与实践指南
本文档全面介绍 Java 平台模块系统(JPMS)的核心概念、架构设计和实践应用。作为 Java 9 引入的最重要特性之一,JPMS 为 Java 应用程序提供了强大的模块化支持,解决了长期存在的 JAR 地狱问题,并改善了应用的安全性和可维护性。本文将深入探讨模块声明、模块路径、访问控制、服务绑定等核心机制,帮助开发者构建更加健壮和可维护的 Java 应用。
1135 0
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
459 1
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
508 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)