DOM解析XML文件(修改属性,增加节点)

2024-08-30 19:48

本文主要是介绍DOM解析XML文件(修改属性,增加节点),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面用DOM解析XML只是对里面的数据读取出来,而DOM解析最大的优势并不是读取,而是可以方便的修改里面的元素。

接着上回的代码,在类中新建一个方法来进行XML文件的修改和增加节点操作。

DOM修改的原理是,DOM在读取XML文件时读入的是文件中所有的节点组成一个DOM树的Document文件,这个文件被读取出来之后我们用JAVA语言可以操作它,不过这样修改也仅仅是修改了JAVA中的这个对象而已,所有在我们将DOM文件修改完了之后还要进行保存工作,这样才是真正的做到了修改XML文件。

原来的XML文档:

<?xml version="1.0" encoding="utf-8"?>
<student><stu num="1111"><name>张三丰</name><sex>男</sex><cla>武当</cla></stu><stu num="2345"><name>小龙女</name><sex>女</sex><cla>古墓</cla></stu></student>

 

代码:

/*** 修改XML文件* @throws Exception */public static void changeXML(Document doc) throws Exception{//------------------------修改节点中元素的内容//找到要修改的节点名称的所有节点,得到名字相同的节点队列NodeList nodes = doc.getElementsByTagName("name");//在队列中选择要修改的节点Node n = nodes.item(0);//修改该节点的文本n.setTextContent("逗逼");//------------------------增加节点的子元素//找到要修改的节点名称的所有节点,得到名字相同的节点队列NodeList nodes1 = doc.getElementsByTagName("student");//在队列中选择要修改的节点Node n1 = nodes1.item(0);//创建要增加的节点元素Element nn = doc.createElement("stu");//设置节点属性Attr attr = doc.createAttribute("num");attr.setValue("6666");nn.setAttributeNode(attr);//增加新元素stu的子元素//姓名Element nn1 = doc.createElement("name");nn1.setTextContent("第三个");nn.appendChild(nn1);n1.appendChild(nn);//性别Element nn2 = doc.createElement("sex");nn2.setTextContent("第三个");nn.appendChild(nn2);n1.appendChild(nn);//班级Element nn3 = doc.createElement("cla");nn3.setTextContent("第三个");nn.appendChild(nn3);n1.appendChild(nn);System.out.println(doc.getElementsByTagName("stu").getLength());//-------------------------保存到文件中//创建一个用来转换DOM对象的工厂对象TransformerFactory factory = TransformerFactory.newInstance();//获得转换器对象Transformer t = factory.newTransformer();//定义要转换的源对象DOMSource xml = new DOMSource(doc);//定义要转换到的目标文件StreamResult s = new StreamResult(new File("D:\\xmlEX\\student4.xml"));//开始转换t.transform(xml, s);}

修改后的XML文档:

<?xml version="1.0" encoding="utf-8" standalone="no"?><student><stu num="1111"><name>逗逼</name><sex>男</sex><cla>武当</cla></stu><stu num="2345"><name>小龙女</name><sex>女</sex><cla>古墓</cla></stu><stu num="6666"><name>第三个</name><sex>第三个</sex><cla>第三个</cla></stu>
</student>

  

从这次的练习得出一个发现,如果直接给一个节点添加一个子节点stu,而且该子节点stu没有其他的子节点的话,那么这个stu在XML保存操作之后,会在文件中显示成<stu/>,只有当这个节点stu有子节点的时候,才会显示成<stu></stu>的两对尖括号的形式.....

这篇关于DOM解析XML文件(修改属性,增加节点)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121761

相关文章

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils