XML基础知识——XML文件对象增删改查(三)

通过Lxml实现XML文件的增删改查保存 背景:在开发过程中,产生一个增删改查保存XML文件的需求,在搜索比较好的解决方案的过程中,发现lxml库非常好用,于是自己写了几个接口。 代码如下: # -*- coding:utf-8 -*- from lxml import etree class ParseXml(object): def __init__(self, config): parser = ... 阅读详情

一、新增对象

在XML文件中,以对象的方式存储数据。如下例子中,用户user中有三个属性username,password,nickname。我们需要把user对象存进去。

源代码如下所示:

package org.wangkeqing.test;

import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.wangkeqing.util.LogUtil;
import org.wangkeqing.util.XmlUtil;

public class TestXML {

	public static void main(String[] args) {
		//获取xml文件路径
		String path = XmlUtil.class.getClass().getResource("/").getPath();
		path = path.replace("bin", "src");		//Java项目而言
		path = path.replaceAll("%20", " ");
		path = path+"users.xml";
		Document document = XmlUtil.getXmlDocument("users.xml",true);
		Element rootElement = document.getRootElement();
		//为根元素添加子元素user
		Element element = rootElement.addElement("user");
		element.addElement("username").addText("zhangsan");
		element.addElement("password").addText("123456");
		element.addElement("nickname").addText("张三");
		//XmlUtil.write2XML(document,path,"UTF-8");
		XmlUtil.write2XML(document, path);
	}

}
程序运行后,xml文件如下:


二、修改对象内容

通过找到username的值,选择该user对象,进行修改password和nickname,源代码如下:

package org.wangkeqing.test;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.wangkeqing.util.LogUtil;
import org.wangkeqing.util.XmlUtil;

public class TestXML {

	public static void main(String[] args) {
		//获取xml文件路径
		String path = XmlUtil.class.getClass().getResource("/").getPath();
		path = path.replace("bin", "src");		//Java项目而言
		path = path.replaceAll("%20", " ");
		path = path+"users.xml";
		Document document = XmlUtil.getXmlDocument("users.xml",true);
		//修改对象,更改节点内容(根据username的值,选择更改的user对象)
		String code="/users/user[username='lisi']";
		Element e=(Element)document.selectSingleNode(code);
		e.element("password").setText("A007");
		e.element("nickname").setText("自动化测试技术");
		XmlUtil.write2XML(document, path);
	}

}
XML文件运行前后如下:

     
三、删除对象

通过document查询出相应的user对象,然后直接从根元素中remove掉该user就行。源代码如下。

package org.wangkeqing.test;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.wangkeqing.util.LogUtil;
import org.wangkeqing.util.XmlUtil;

public class TestXML {

	public static void main(String[] args) {
		//获取xml文件路径
		String path = XmlUtil.class.getClass().getResource("/").getPath();
		path = path.replace("bin", "src");		//Java项目而言
		path = path.replaceAll("%20", " ");
		path = path+"users.xml";
		Document document = XmlUtil.getXmlDocument("users.xml",true);
		//删除某个对象
		String  code="/users/user[username='wangwu']";
		Element e=(Element)document.selectSingleNode(code);
		//然后从根节点中把这个节点给删除
		rootElement.remove(e);
		XmlUtil.write2XML(document, path);
	}

}
程序运行后,xml文件



四、查询对象

通过document对象查询出相应的user,例如:查询用户名为lisi的用户,最后输出到控制台。源代码如下:

package org.wangkeqing.test;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.wangkeqing.util.LogUtil;
import org.wangkeqing.util.XmlUtil;

public class TestXML {

	public static void main(String[] args) {
		//获取xml文件路径
		String path = XmlUtil.class.getClass().getResource("/").getPath();
		
		path = path.replace("bin", "src");		//Java项目而言
		path = path.replaceAll("%20", " ");
		path = path+"users.xml";
		Document document = XmlUtil.getXmlDocument("users.xml",true);
		String code = "/users/user[username='lisi']";
		Element es = (Element)document.selectSingleNode(code);
		if(es!=null){
		LogUtil.info("==查询结果=="+es.element("password").getText()+"==="+es.element("nickname").getText());
		}else{
			LogUtil.info("==查询结果==您查询的对象不存在");
		};

	}

}

输出结果:2017-01-12 15:03:25.566 INFO  ==查询结果==A007===自动化测试技术


同理,如果需要查询多个对象直接使用document的selectNodes(code)方法查询。




使用python对xml文件实现增删改查的简单封装 博客已经好久没有更新了,博主现在开始玩Python了,因为公司要求以后我做Python这一块,已经研究了几个星期了。 以后还会用C或者 C++的。 在去年的这段时间还在奋斗在openframeworks,这期间发生了很多事,话不多说,直接上代码。 ------------------------------------------------------------------------- 阅读详情

相关推荐

34、Java——一个案例学会Dom4j解析技术对XML文件的增删改查

使用Dom4j解析技术实现对animal.xml文件进行增删改查操作

不迁怒,不贰过。小知识,大智慧。 1148

xml显示 ,新增信息

一。原本的xml类似这个样的 - - 王通 java 89 - 李佳 sql 58 二。输出显示在控制台上  需要导入dom4j包 import java.io.File; import java.util.List; import org.dom4j.Document;//注意导的包不要导错了。!!! import org.dom4j.DocumentException; impor

MZ199290的博客 444

C#编程:XML文件增删改查操作实践指南

在本章节中,我们深入探讨了如何在C#中修改XML文件的内容和属性。我们展示了直接通过对象属性访问和修改的方法,以及利用XPath和LINQ to XML查询语言的优势来精确定位并更新XML元素和属性。这些技术允许开发者能够高效地对XML文档进行读取、修改和维护操作,从而在数据交换和处理方面提供灵活性和强大的功能。通过具体的代码示例,我们详细阐述了每个操作的细节,为开发者提供了一套实用的工具,以便他们能够有效地管理和操作XML数据。

weixin_35706255的博客 859

1.程序包com.sun.xml.internal.ws.policy.privateutil不存在

程序包com.sun.xml.internal.ws.policy.privateutil不存在

m0_55895362的博客 1150

Java操作XML工具类XmlUtil详解

主要为大家详细介绍了Java操作XML工具类XmlUtil的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

CS算法实战:用MATLAB从零实现SAR点目标成像(附完整代码)

本文详细介绍了如何使用MATLAB从零实现SAR点目标CS成像算法,涵盖Chirp Scaling(CS)算法的核心理论、距离徙动校正(RCMC)和方位压缩等关键步骤。通过完整的代码示例和实战技巧,帮助读者掌握SAR成像处理算法,提升遥感图像处理能力。

weixin_29211309的博客 179

MAVEN打包报错:com.sun.xml.internal.ws.util不存在

在项目的pom.xml build -> plugins 中加入

℡メ㏑╭ァ小凯 1659

LangChain4j + Milvus 从0-1实现会话管理与RAG检索的AIChat超详细教程

本教程将介绍如何使用LangChain4j和Milvus向量数据库构建一个具备流式输出、会话管理、会话隔离和基于文档RAG检索能力的AI机器人。我们将使用阿里百炼模型作为LLM后端,并通过Docker部署Milvus向量数据库。创建Assistant接口,定义聊天服务:LangChain4j 中文文档 | LangChain4j 中文文档wiringMode :这个属性一般两种,一种是自动装配,我们这里选择手动配置。

2301_80014343的博客 1436

XML解析

一、DOM解析   DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。   DOM接口提供了一种通过分层对象模型来访问XML文档信息的方式,这些分层对象模型依据XML的文档结构形成了一棵节点树

一缕清风伴你左右的博客 396

AI编码规则:从提示工程到自动化,提升大模型生成代码质量

在软件工程领域,代码质量是保障软件可维护性、安全性和团队协作效率的核心。其背后遵循着从基础语法规范到架构设计原则的一系列工程实践。随着大语言模型(LLM)在代码生成任务中的广泛应用,如何确保AI生成的代码符合这些工程标准,成为一个关键的技术挑战。这涉及到将人类工程师积累的最佳实践,转化为机器可理解、可执行的明确约束。通过系统化的**编码规则**定义与集成,例如构建涵盖安全、风格、架构的多层次规则集,并将其融入**提示工程**或自动化工作流,可以显著引导AI产出更健壮、规范的代码。这种方法的价值在于,它能将模

weixin_42525189的博客 643

012、乘累加单元(MAC):NPU中最基本的计算单元

本文深入剖析了神经网络处理器(NPU)中的核心计算单元——乘累加单元(MAC)。作者通过实际调试案例揭示了MAC单元设计中的关键问题:定点数格式对齐、累加器位宽陷阱、流水线优化和多MAC同步方案。重点讨论了INT8量化中的边界条件处理、偏置项截断风险以及零值检测等实战经验,并提供了三点实用建议:建立精确的C模型、参考RISC-V P扩展指令集、仔细审查芯片规格书。文章强调硬件加速的实际瓶颈往往在于数据搬运而非计算单元本身,为NPU开发者提供了宝贵的工程实践参考。

m0_50546716的博客 298

QT_DOM方式操作xml文件增删改查

DOM是Document ObjectModel的简写,即XML文档对象模型,是由W3C提出的一种处理XML文档的标准接口。 DOM 可以一次性读入整个XML文档,在内存中构造为一棵树(DOM树)将XML文件表示成一棵树,便于随机访问其中的节点,但消耗内存相对多一些。能够在这棵树上进行导航,比如移动到下一节点或者返回上一节点,也可以对这棵树进行修改,或者是直接将这颗树保存为硬盘上的一个 XML 文件。......

Txwtech 2073

嵌套学习 (Nested Learning, NL):赋予AI持续学习能力的革命性范式

嵌套学习(Nested Learning, NL)的核心哲学在于彻底颠覆传统深度学习中将模型架构(Architecture)与优化算法(Optimization)视为两个独立组件的“扁平化”视角 。传统方法通常将神经网络的结构设计和其训练过程分离开来,模型架构是预先定义好的静态蓝图,而优化算法(如SGD、Adam)则是一个外部的、统一的规则引擎,负责在训练期间调整模型参数 。这种分离的视角隐藏了模型内部不同组件之间复杂的梯度流和动态更新过程,将整个学习系统视为一个单一层次的优化问题。然而,嵌套学习范式提出,

步子哥的博客 489

【JavaEE】Mybatis XML配置文件实现增删改查

Mybatis使用xml文件实现数据库的简单增删改查操作

yj20040627的博客 2402

【图像去噪】基于加权核范数最小化算法实现图像去噪附matlab代码

1 简介 WNNM是一种约束矩阵奇异值稀疏性的低秩算法,在NNM理论基础上增加了核范数权重,有效利用了自然图像的先验信息并提高了核范数的灵活性. 2 部分代码 ​clcclear allclose allnSig = 100;O_Img = double(imread('Monarch.png'));​randn('seed', 0);N_Img = O_Img + nSig* randn(size(O_Img)); ..

qq_59747472的博客 3118

OpenCV计算机视觉实战(11)——边缘检测详解

在本节中,我们系统介绍了三大经典边缘检测算子,包括 Sobel 算子:一阶导数平衡了噪声抑制与边缘提取,结合方向信息可用于纹理分析与车道检测;Laplacian 算子:二阶导数对微小亮度突变尤为敏感,配合零交叉和细化技术,可精确捕捉任意方向的细节边缘;Canny 算法:集成多阶段处理与双阈值策略,通过多尺度融合与自适应阈值优化,达到抗噪与细节兼顾的卓越效果。

qq_30167691的博客 4377

C# XML文件操作(增删改查)

一、利用DOM(文档对象模型)写入一个XML文件 static void Main(string[] args) { //1、创建一个XML文档对象 XmlDocument doc = new XmlDocument(); //2、创建第一行描述信息 XmlDecla...

陈小洋 2729

AutoSAR MemMap模块详解及使用注意事项

在本文中,我们将深入探讨MemMap模块的实例解析,并介绍在使用该模块时需要注意的一些事项。在上述代码中,我们使用了MEMMAP_START_SEC_VAR_32BIT和MEMMAP_START_SEC_CODE来定义MemMap区域的起始位置,使用MEMMAP_STOP_SEC_VAR_32BIT和MEMMAP_STOP_SEC_CODE来定义MemMap区域的结束位置。1.合理划分MemMap区域:根据实际需求,合理划分MemMap区域,将不同类型的变量放置在不同的区域中,以便于管理和访问。

weixin_50547796的博客 2534

c++解析xml文件(增删改查)看完必会

文章目录初始化配置遍历xml文件我的xml文件:遍历代码输出结果未完待续!!! 初始化配置 tinyxml下载: https://sourceforge.net/projects/tinyxml/ 下载完成之后进行解压,tinystr.h、tinystr.cpp、tinyxml.h、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp 6个文件放在你的项目目录下,你自己写的头文件和.cpp文件所在的目录 在你的程序文件中引入头文件 #include "tiny

weixin_45715405的博客 3352

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java DOM操作xml文件

基本介绍 本文章操作xml文件,选用是org.w3c.dom ,JDK自带的依赖包 首先理解xml文件的结构,含有“标签”(tag);“属性”(attribute);“文本内容(text)” 组成,这就有点类似HTML结构(这点理解很重要) 通常对XML文件进行解析,无非就是获取XML内容做增删改查操作 XML增删改查常用方法 一 、初始化先获取document对象 ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); /

HenryXiao的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MyBatis基于XML的增删改查

在MyBatis入门案例中,实现了查询操作,这篇文章使用XML方式实现增删改查,这里贴出关键部分。 工程目录结构 UserDao public interface UserDao { List<User> getUserList(); User getUserById(int id); int addUser(User user); int updateUser(User user); int deleteUser(int id); }

small_apples的博客 1003

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

php xml 增删改查,php对xml文件的增删改查

源文件2016-08-01文件内容$file='callBoard.xml';查询xml-----------------------$doc=new DOMDocument();//实例化对像$doc->load($file);//载入文件$data=array();$time=$doc->getElementsByTagName("endTime");//获取元素是title$da...

weixin_42298332的博客 176

JAVA 通讯录 —— 实现对XML文件数据的增删改查

心血来潮,带着好奇写了人生中第一篇博客,哈哈哈哈 ~ 嗝 ~ ~   这篇文章主要就是分享自己做的一次项目作业,一是为了分享,二是用另外一种方式保存自己的代码 嘻嘻嘻 ~。所以有啥写的不好的地方请多多包涵、多多指教。下面进入正题:   这个项目主要就是在 通过dom4j解析xml文件 ,在控制台实现一个对XML文件里的数据实现一个增删改查的功能。该项目 需要自行下载两个jar包 (dom4j.ja...

Q~Q的博客 1533

使用DOM4J解析XML文件

DOM4J解析xml 概念:以一切皆对象的原则将xml当成一个对象,在程序中对对象进行进行增删改查的操作即达到了对xml文件进行增删改查的操作。 先讲述在建立好xml文件的基础上,对xml文件进行的操作 创建xml文件,以eclipse为例, 在src下 new>>other>>输入xml>>创建xml文件 xml文件(Student.xml) 代码片. &l...

qq_42207682的博客 560

XML的增删改查

XML节点元素的增删改查 sources包 <?xml version="1.0" encoding="gb2312"?> <!-- #REQUIRED 必填 #IMPLIED 可有可无 #FIXED 默认 必须是指定的固定值 ID 唯一,赋值规范。不能数字开头 IDREF 引用其他ID类型取值 --><books> ...

qq_44102678的博客 894

C++读写XML文件(增删改查)

将数据库表student_table的增删改查用XML来实现: 其中,conditionMap存储条件语句,where "xxx" = "xxx"(where conditionMap.begin()-&gt;first == conditionMap.begin()-&gt;second) #include &lt;iostream&gt; #include "tinyxml.h" #incl...

浮生流年的博客 7657
上一篇: Java编程基础——获取类路径时的空格问题
下一篇: XML基础知识——写入数据到XML文件(二)
spring_model
博客等级 码龄11年 36粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值