XML编程实例--对xml配置文件中的数据进行增、删、改、查

Python中的xmltodict库:轻松处理XML数据,Web前端、配置文件必备知识 在Python编程中,处理XML数据是一项常见且重要的任务。XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,广泛应用于Web服务、配置文件和数据交换等领域。然而,Python的标准库并不直接提供处理XML的便捷方法,因此我们需要借助第三方库来实现这一功能。本文将详细介绍xmltodict库,这是一个强大的工具,能够将XML数据转换为Python字典,反之亦然,从而极大地简化了XML数据的处理过程。 阅读详情

import java.io.FileOutputStream;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;



public class Dom4jDemo1 {
	@Test
	public void dom4j1() throws Exception{
		//1.创建解析器
		SAXReader reader=new SAXReader();
		//2.解析xml获取代表整个文档的dom对象
		Document dom=reader.read("book.xml");
		//3.获取跟元素
		Element root= dom.getRootElement();
		//4.逐级获取,拿到想要的书名,然后打印出来
		String text=root.element("书").element("书名").getText();
		System.out.println(text);
	}
	@Test
	public void dom4j2() throws Exception{
		//1.创建解析器
		SAXReader reader=new SAXReader();
		//2.获取代表整个文档的dom对象
		Document dom=reader.read("book.xml");
		//3.获取根元素
		Element root=dom.getRootElement();
		//4.获取书名集
		List<Element> list=root.elements("书");

		String bookName=list.get(1).element("书名").getText();
	
		System.out.println(bookName);
	}
	
	@Test
	public void add() throws Exception{
		//获取解析器
		SAXReader reader=new SAXReader();
		//解析xml获取dom
		Document dom=reader.read("book.xml");
		//获取根元素
		Element root=dom.getRootElement();
		//<特价>20.00</特价>
		Element price2Ele=DocumentHelper.createElement("特价");
		price2Ele.setText("20.00美元");
		//把<特价>20.00</特价>挂载到书下
		root.element("书").add(price2Ele);
		//写回到xml中
//		Writer write=new OutputStreamWriter(new FileOutputStream("book.xml"),"UTF-8");
//		dom.write(write);
//		write.flush();
//		write.close();
		
		XMLWriter writer = new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
		writer.write(dom);
		writer.flush();
		writer.close();
	}
	@Test
	public void update()throws Exception{
		//获取解析器
		SAXReader reader=new SAXReader();
		//解析xml获取dom
		Document dom=reader.read("book.xml");
		//获取跟元素
		Element root=dom.getRootElement();
		//修改值
		root.element("书").element("特价").setText("2.0元");
		//更新xml
		XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
		writer.write(dom);
		writer.close();
		
	}
	@Test
	public void delete()throws Exception{
		//获取解析器
		SAXReader reader=new SAXReader();
		//解析xml获取dom
		Document dom=reader.read("book.xml");
		//获取跟元素
		Element root=dom.getRootElement();
		//删除特价
		Element price2=root.element("书").element("特价");
		price2.getParent().remove(price2);
		//更新xml
		XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
	}
	
	@Test
	public void add2()throws Exception{
		//获取解析器
		SAXReader reader=new SAXReader();
		//解析xml获取dom
		Document dom=reader.read("book.xml");
		//获取根元素
		Element root=dom.getRootElement();
		//凭空创建特价
		Element price2Ele=DocumentHelper.createElement("特价");
		price2Ele.setText("3.0元");
		//插入到指定的位置
		List<Element> list=root.element("书").elements();
		list.add(1, price2Ele);
		//跟新xml
		XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
		writer.write(dom);
		writer.close();
	}
	
	@Test
	public void attr()throws Exception{
		//获取解析器
		SAXReader reader=new SAXReader();
		//解析xml获取dom
		Document dom=reader.read("book.xml");
		//获取跟元素
		Element root=dom.getRootElement();
		
		//加属性
		//创建属性	出版社="xxx出版社";
		Element bookEle=root.element("书");
		Attribute attr=DocumentHelper.createAttribute(bookEle, "出版社", "xxx出版社");
		//挂载到父标签上
		bookEle.add(attr);
		bookEle.addAttribute("出版社", "xxx出版社");
		
		
		//查询属性
		Attribute attrr=bookEle.attribute("出版社");
		String name=attrr.getName();
		String value=attrr.getValue();
		System.out.println(name+"..."+value);
	
		//修改属性
		bookEle.setAttributeValue("出版社", "xxx出版社");
	
		//删除属性
		Attribute attrr1=bookEle.attribute("出版社");
		bookEle.remove(attrr1);
		
		//更新xml
		XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
		writer.write(dom);
		writer.close();
	}

}

上面的代码需要第三方的jar包dom4j.jar


import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.junit.Test;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

public class SaxDemo1 {
	//解析方式一
	@Test
	public void sax1() throws Exception{
		//1.创建解析工厂
		SAXParserFactory factory=SAXParserFactory.newInstance();
		//2.生产解析器
		SAXParser parser=factory.newSAXParser();
		//3.获取读取器
		XMLReader reader=parser.getXMLReader();
		//4.设置事件处理器		我采用匿名内部类实现
		
		reader.setContentHandler(new ContentHandler(){
			
			boolean flag=false;
			int count=0;
			@Override
			public void startElement(String uri, String localName, String name,
					Attributes atts) throws SAXException {
				// TODO Auto-generated method stub
				//System.out.println("xml文档开始解析了....");
				
				if("书名".equals(name)){
					flag=true;
					count++;
				}
				
			}
			
			@Override
			public void characters(char[] ch, int start, int length)
					throws SAXException {
				// TODO Auto-generated method stub
				if(flag && count==2){
					System.out.println(new String(ch,start,length));
					
				}
			}
			
			@Override
			public void endElement(String uri, String localName, String name)
					throws SAXException {
				// TODO Auto-generated method stub
				//System.out.println("xml文档解析完成了");
				if("书名".equals(name)){
					flag=false;
				}
			}
			@Override
			public void endDocument() throws SAXException {
				// TODO Auto-generated method stub
				
			}

			

			@Override
			public void endPrefixMapping(String prefix) throws SAXException {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void ignorableWhitespace(char[] ch, int start, int length)
					throws SAXException {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void processingInstruction(String target, String data)
					throws SAXException {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void setDocumentLocator(Locator locator) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void skippedEntity(String name) throws SAXException {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void startDocument() throws SAXException {
				// TODO Auto-generated method stub
				
			}

			

			@Override
			public void startPrefixMapping(String prefix, String uri)
					throws SAXException {
				// TODO Auto-generated method stub
				
			}
			
			
		});
		
		//5.解析xml
		reader.parse("book.xml");
		
	}
	
}


配置文件如下:

book.xml

<?xml version="1.0" encoding="UTF-8"?>

<书架> 
  <书> 
    <书名>Java就业培训教程</书名>  
    <特价>3.0元</特价>  
    <作者>张孝祥</作者>  
    <售价>39.00元</售价> 
  </书>  
  <书> 
    <书名>JavaScript网页开发</书名>  
    <作者>张孝祥</作者>  
    <售价>28.00元</售价> 
  </书> 
</书架>


C#中XML配置文件读写教程 C#(读作”看”)是一种由微软公司开发的现代、类型安全的面向对象的编程语言,是.NET框架的主要开发语言。自从2002年首次发布以来,C#经历了多个版本的迭代,不断融入新的功能与特性。它的设计初衷是为了提供一种简洁、安全并且高效的编程方式,以满足开发复杂应用程序的需求。XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言。它的设计目标是传输和存储数据,而不是用来显示数据。XML的可扩展性意味着用户可以定义自己的元素和属性标记来描述各种数据。 阅读详情

相关推荐

对XML进行增删改查

NULL 博文链接:https://zhouhaiyang88.iteye.com/blog/2302442

03-增删改查实现

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。最后祝愿各位身体健康,顺利拿到心仪的offer!由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!在了PDF文档里**

2401_83412285的博客 675

基于深度强化学习技术优化无线网络中的资源分配(一)DQN部分代码

这是一个GitHub上的开源项目,链接:https://github.com/alexis-anzaldo/Deep-Reinforcement-Learning-for-resource-allocation-in-wireless-networks该项目旨在通过深度强化学习DQL技术优化无线网络中的资源分配,特别关注小型蜂窝和超密集无线蜂窝网络中的功率控制问题,主要目标是提高DRL模型的学习效率和网络吞吐量。

m0_46292040的博客 1538

最简单的XML读取、修改数据方法

XML文件 &lt;?xml version="1.0" encoding="utf-8" ?&gt; &lt;root&gt;   &lt;SteriaSuccesstime&gt;20181210&lt;/SteriaSuccesstime&gt; &lt;/root&gt;   //获取XML中的节点数据 private string GetSuccessLocalModet

youshuai001的博客 2489

音频DSP开发中的‘隐藏关卡’:那些SigmaStudio未公开的模块计算秘籍

本文深入探讨音频DSP开发中SigmaStudio未公开的模块计算秘籍,重点解析动态范围控制、均衡器参数映射和混响算法优化等核心模块计算公式。通过实际案例揭示如何利用这些非官方技巧提升音频质量与系统性能,为ADI DSP开发者提供宝贵的实战经验。

water的专栏 911

miRNA测序数据生信分析——第二讲,数据库下载整理

一个非编码RNA的整合数据库,可用来识别鉴定各种类型的ncRNA。提供的是ncRNA在基因组上的基因序列,而非转录成熟ncRNA的序列。最新版:2022-11-02Rfam数据库中ncRNA类型分三大类:Cis-reg和Gene和Intron。这三大类又有子类。一个提供包括miRNA序列数据、注释、预测基因靶标等信息的全方位数据库,是存储miRNA信息最主要的公共数据库之一。最新版:2018-12-01。

weixin_44616693的博客 4098

minixml的使用

参考文章: https://blog.youkuaiyun.com/huangkaiyue1/article/details/54142305https://blog.youkuaiyun.com/shenwansangz/article/details/47358785(minixml中文手册) https://blog.youkuaiyun.com/weixin_42325191/article/details/8505819...

fengruoying93的专栏 3448

CMOS sensor 基础

NA

m0_72053187的博客 1657

minixml使用的一个小例子

xml文件 <?xml version="1.0" encoding="utf-8"?> <XML Version="2.0"> <Project Width="1920" Height="1080"> <Page Width="1920" Height="1080"> <CommandButton1 TextEX="命令按钮1"> <Button TextEX="电器1" />

hspeedhspeed的博客 403

【小白教程】本地部署VLM-R1模型(使用Docker)

通过Docker本地部署VLM-R1大模型,详细教程。

m0_69855053的博客 2938

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

weixin_42830015的博客 3985

MyBatis---MyBatis实现Mapper接口方式的mybatis的增,删,改,查

MyBatis实现Mapper接口方式的mybatis的增,删,改,查

DKPT的博客 680

HBase骚操作之数据加载方式BulkLoad

本文研究了一种HBase BulkLoad的入库方式,该方式利用HBase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。该方式配合MapReduce完成,高效便捷,而且不占用Region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对Hbase节点的写入压力。HBase BulkLoad对于异构数据源的合并及大量数据一次性导入具有重要指导意义,相比HBase Put操作在性能上具有较高的优势

石榴姐yyds 7789

探索C与XML的无限可能:高效处理XML文件的开源指南

探索C#与XML的无限可能:高效处理XML文件的开源指南 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发中,XML(可扩展标记语言)作为一种通用的数据交换格式,广泛应用于配置文件、数据存储和通信协议等领域。为了帮助开发者更高效地处理XML文件,我们推出了这个开源项目——C# 对 XML 文件读写教程及示例。本项目不仅提供了详细的代码示例,还涵盖了从基础到...

gitblog_09716的博客 750

SoulX-FlashHead 加速实践,提升3倍。

SoulX-FlashHead 加速实践,提升3倍。

jacke121的专栏 222

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

mybatis实现数据库 增、删、改、查

一、打开编程工具(我用的idea) 1.新建一个项目 2.名字随意我用的是日期 3.记得选择maven 二、mybatis和数据库依赖 1.新建完记得等编程工具自己下载一些资源,下面是下载好以后 2.接下来就是依赖了 <!--数据库的依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</art...

bai2476787993的博客 317

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

XML配置文件中的Spring配置文件

我的上一个博客非常简单,因为它涵盖了我从Spring 3.0.x到Spring 3.1.x的轻松升级,最后我提到可以将Spring模式升级到3.1,以利用Spring的最新功能。 在今天的博客中,我将介绍这些功能中最酷的功能之一:Spring配置文件。 但是,在谈论如何实现Spring配置文件之前,我认为探索它们正在解决的问题是一个好主意,这是需要为不同的环境创建不同的Spring配置。 之...

最佳 Java 编程 713

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

XML文件详解:XML是什么、XML配置文件、XML数据文件、XML文件解析教程

问题咨询及项目源码请加群: QQ群: 名称:IT项目交流群 群号:245022761 1、简介概述XML,为什么要用XML(记住) XML 被设计用来传输和存储数据。 XML 把数据从 HTML 分离 XML 简化数据共享 XML 简化数据传输 XML 简化数据传输 XML 使您的数据更有用 总结:XML就是用来存储数据的文件,可以通过解析后提取我们想要数据。 1、如:配置文件中存储需要配置的数据;2、数据文件存储我们需要使用的数据; 2、写XML文件需要注意的语法,记...

深耕嵌入式领用多年, 致力于分享嵌入式领域技术! 4546

XML配置文件

目录 XML格式什么是XML?XML的作用1.数据交换2.Web服务3.内容管理4.Web集成5.配制标准的XML格式 元素定义 案例属性定义 案例(XML的作用原文来源是百度文库https://wenku.baidu.com/view/47802df483eb6294dd88d0d233d4b14e85243ee8.html) 属性定义 这篇文章就到这里结束了,接下来...

weixin_64938628的博客 661

C++中的XML配置文件编程经验

C++中并没有操作XML文件的标准库,因此大家需要使用各自熟悉的XML库来解决XML文件的读取与写入。XML的一个重要用途是作为程序的配置文件,存储程序运行相关的各种数据。本文总结了使用libxml2库来对XML配置文件进行编程的一些经验。最后提供了一个封装好的类CXMLConfig,并详细说明了该类的功能、使用方法和注意事项。 阅读本文所需的技术背景: l         C/C++简单语

xiexievv的专栏 3056

Qt配置文件之Xml

点击上方蓝字可关注公众号呦,方便下次阅读~ XML(可扩展标记语言)文件本身不能对自己“做出”任何操作。它们是存储数据的一种简单方式,而存储的数据可以被其它软件轻松读取。很多程序都会使用可扩展标记语言(XML)来存储数据。XML可用来存储数据、携带数据和交换数据,不是为了显示数据而设计的。 配置文件在程序中的应用还是很常见的,如我们需要启动一个Socket 的客户端去连接远程的Serv...

Pou光明的博客 1135

第十章:XML

​ XML : XML(EXtensible Markup Language)可扩展标记语言1、用来保存数据,而且这些数据具有自我描述性2、它还可以作为项目或者模块的配置文件(javaweb的web.xml)3、还可以用来做网络传输数据的格式(现在用不多了,都是JSON为主)特点:XML与操作系统、编程语言的开发平台无关实现不同系统之间的数据交换​ 注意: XML声明是可选的,因此你的xml没有它就可以很好地形成。但建议使用它,以便解析器不会做出错误的假设,特别是关于所使用的编码。dom4j操作XML...

NoKris的博客 942

MyBatis的基础知识and(增,删,改,多条件(模糊)查)的demo

结果: 架构、 首先 我们先导jar包 pom.xml中的<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h

qq_36074043的博客 677

XML编程

第二章 XML编程 目录 1、XML入门 1.1 XML介绍 ​ Extensible Markup Language,翻译过来为可扩展标记语言。Xml技术是w3c组织发布的,目前推荐遵循的是W3C组织于2000发布的XML1.0规范。在XML语言中,它允许用户自定义标签。一个标签用于描述一段数据;一个标签可分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其它标签描述其它数据,以此...

sdbdfhgf的博客 783
上一篇: XML相关知识点
下一篇: WEB开发入门以及HTTP协议
escdelete
博客等级 码龄14年 37粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值