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

效果图


原文出自:


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

相关文章
|
XML JavaScript 数据格式
XML 相关技术
XML 相关技术
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
537 7
使用Java和XPath在XML文档中精准定位数据
|
XML JavaScript Java
【JAVA XML 探秘】DOM、SAX、StAX:揭秘 Java 中 XML 解析技术的终极指南!
【8月更文挑战第25天】本文详细探讨了Java中三种主流的XML解析技术:DOM、SAX与StAX。DOM将XML文档转换为树状结构,便于全方位访问和修改;SAX采取事件驱动模式,适用于大型文件的顺序处理;StAX则兼具DOM和SAX的优点,支持流式处理和随机访问。文中提供了每种技术的示例代码,帮助读者理解如何在实际项目中应用这些解析方法。
769 1
|
数据采集 前端开发 JavaScript
如何利用Java和Kotlin实现动态网页内容抓取
如何利用Java和Kotlin实现动态网页内容抓取
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
970 5
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
450 4
|
XML JavaScript Java
java与XML文件的读写
java与XML文件的读写
218 3
|
XML 存储 JavaScript
在 Java 中如何将 ArrayList 转换为 XML
【8月更文挑战第23天】
386 3
|
XML Java 数据库连接
【项目问题解决】 java.lang.IllegalArgumentException: XML fragments parsed
**问题摘要:** Java 应用在执行MyBatis映射时抛出`IllegalArgumentException`,指出XML片段缺少`com.xxx.xxx.xxx.xxx.dao.SingleApasInfoDao.selectListCondition`的值。此异常暗示XML映射文件存在错误或未定义指定方法。解决策略包括检查映射文件中标签的完整性与属性设置,修复可能的XML格式错误,以及确保使用的XML解析器支持所需特性,如有必要,升级解析器。
1072 1
|
C# 前端开发 UED
WPF数据验证实战:内置控件与自定义规则,带你玩转前端数据验证,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用开发中,数据验证是确保输入正确性的关键环节。前端验证能及时发现错误,提升用户体验和程序可靠性。本文对比了几种常用的WPF数据验证方法,并通过示例展示了如何使用内置验证控件(如`TextBox`)及自定义验证规则实现有效验证。内置控件结合`Validation`类可快速实现简单验证;自定义规则则提供了更灵活的复杂逻辑支持。希望本文能帮助开发者更好地进行WPF数据验证。
601 0