首页 > 编程语言 >python ElementTree操作xml节点

python ElementTree操作xml节点

时间:2023-11-08 15:45:08浏览次数:37  
标签:xml python Detail Voucher 2023 ElementTree root 节点

python ElementTree操作xml节点,包括增删改查

xml原文

<Voucher>
    <Id>967a198783d14835860574c697478156</Id>
    <Remark>main摘要443344245567583384475</Remark>
    <Delete>需要删除的节点1</Delete>
    <DetailList>
        <Detail>
            <Id>f0bfdbad7de14d1386c6f7fee6c9fa66</Id>
            <Remark>摘要443344245567583384475</Remark>
            <Delete>需要删除的节点2</Delete>
        </Detail>
        <Detail>
            <Id>6f9a8722e78f455b953ac20161736499</Id>
            <Remark>摘要8476127329416243421762023</Remark>
            <Delete>需要删除的节点3</Delete>
        </Detail>
    </DetailList>
</Voucher>

要求对这个xml 进行如下操作:

修改Voucher/Remark、Voucher/DetailList/Detail/Remark值,在原有值后面后面增加2023
增加Voucher/AdmDivCode、Voucher/DetailList/Detail/AdmDivCode,值为440300000
删除节点:Voucher/Delete、Voucher/DetailList/Detail/Delete  
import xml.etree.ElementTree as ET
"""
修改Voucher/Remark、Voucher/DetailList/Detail/Remark值,在原有值后面后面增加2023
增加Voucher/AdmDivCode、Voucher/DetailList/Detail/AdmDivCode,值为440300000
删除节点:Voucher/Delete、Voucher/DetailList/Detail/Delete
"""
# 创建XML字符串
xml_data = """<Voucher>
    <Id>967a198783d14835860574c697478156</Id>
    <Remark>main摘要443344245567583384475</Remark>
    <Delete>需要删除的节点1</Delete>
    <DetailList>
        <Detail>
            <Id>f0bfdbad7de14d1386c6f7fee6c9fa66</Id>
            <Remark>摘要443344245567583384475</Remark>
            <Delete>需要删除的节点2</Delete>
        </Detail>
        <Detail>
            <Id>6f9a8722e78f455b953ac20161736499</Id>
            <Remark>摘要8476127329416243421762023</Remark>
            <Delete>需要删除的节点3</Delete>
        </Detail>
    </DetailList>
</Voucher>
"""

# 解析XML,root的tag就是根节点Voucher
root = ET.fromstring(xml_data)

# 修改Voucher/Remark值
voucher_remark = root.find('Remark')
voucher_remark.text += '=====2023'

# 修改Voucher/DetailList/Remark值
for detail in root.findall('.//Detail/Remark'):
    detail.text += '=====2023'

# 一次性批量修改
for node in root.findall(".//Remark"):
    node.text += '=====2023+++++'

# 添加Voucher/AdmDivCode
adm_div_code = ET.Element('AdmDivCode')
adm_div_code.text = '440300000++++++'
root.append(adm_div_code)

# 添加Voucher/DetailList/AdmDivCode
for detail in root.findall('.//Detail'):
    adm_div_code = ET.Element('AdmDivCode')
    adm_div_code.text = '440300000==='
    detail.append(adm_div_code)

#删除根目录下节点Delete :Voucher/Delete
delete_element = root.find('Delete')
root.remove(delete_element)

# 删除Voucher/DetailList/Detail目录下Delete
for detail in root.findall(".//DetailList/Detail"):
    # 删除只有先进入父目录,在以父目录身份删除子节点
    for node in detail.findall("Delete"):
        detail.remove(node)

# 将修改后的XML转换为字符串并打印
modified_xml = ET.tostring(root, encoding='utf-8').decode()
print(modified_xml)

执行结果如下,增删该都成功了

<Voucher>
    <Id>967a198783d14835860574c697478156</Id>
    <Remark>main摘要443344245567583384475=====2023=====2023+++++</Remark>
    <DetailList>
        <Detail>
            <Id>f0bfdbad7de14d1386c6f7fee6c9fa66</Id>
            <Remark>摘要443344245567583384475=====2023=====2023+++++</Remark>
            <AdmDivCode>440300000===</AdmDivCode></Detail>
        <Detail>
            <Id>6f9a8722e78f455b953ac20161736499</Id>
            <Remark>摘要8476127329416243421762023=====2023=====2023+++++</Remark>
            <AdmDivCode>440300000===</AdmDivCode></Detail>
    </DetailList>
<AdmDivCode>440300000++++++</AdmDivCode></Voucher>

 xml 操作模块ElementTree说明文档:https://docs.python.org/3/library/xml.etree.elementtree.html

 

标签:xml,python,Detail,Voucher,2023,ElementTree,root,节点
From: https://www.cnblogs.com/testway/p/17817554.html

相关文章

  • 简单实现Python采集B站视频
    我们今天要学习的是如何利用Python的requests库编写一个采集B站的小爬虫,都是一些很基础的内容,简单易学,没有什么太过复杂的东西,一起来看看吧。首先安装库:```bashpipinstallrequests```然后,我们可以开始编写爬虫程序:```pythonimportrequestsproxy_host='www.duoip.cn'proxy_......
  • Python采集抖音快手商户
    抖音快手不仅是一个短视频平台,而且也是当下很多商家争抢进场的热门电商平台,以下是一个用Python实现采集抖音快手的爬虫程序,用于采集抖音快手的商家,对于做竞品同行数据分析来说,一定非常不错的。```pythonimportrequestsfrombs4importBeautifulSoup#请求URLurl='https://ww......
  • Python和requests库结合采集豆瓣短评
    Python是一种常用的程序语言,今天我们就用Python和requests库结合,来写一个采集豆瓣短评的程序,非常的简单,一起来学学吧。```pythonimportrequestsfrombs4importBeautifulSoup#设置代理proxy=f'http://{proxy_host}:{proxy_port}'headers={'User-Agent':'Mozilla/5.......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-25-处理单选和多选按钮-中篇
    1.简介上一篇中宏哥讲解和介绍的单选框有点多,而且由于时间的关系,宏哥决定今天讲解和分享复选框的相关知识。2.什么是单选框、复选框?单选按钮一般叫raidobutton,就像我们在电子版的单选答题过程一样,单选只能点击一次,如果点击其他的单选,之前单选被选中状态就会变成未选中。单......
  • python基础-数据类型及常用方法
    数字类型int:是整形,用来记录没有小数点的数字,例如:1、2、3、4等等age=18print(age)print(type(age))float:是浮点型,用来记录有小数点的数字,例如:12.3、100.001等money=88888.88print(money)print(type(money)) str:是字符串类型,用来记录描述性质的东西,例如......
  • 基于三维点云数据的主成分分析方法(PCA)的python实现
    https://github.com/mengxingshifen1218/learning-pointcloud/blob/master/%E6%B7%B1%E8%93%9D/CH1/PointCloudHomework1/pca_normal.py  KD-Tree原理详解https://zhuanlan.zhihu.com/p/112246942构建算法:Input:无序化的点云,维度kOutput:点云对应的kd-treeAlgorithm:1......
  • 1.Python操控Excel之读取
    1.读取excel文件数量和创建Sheet文件: 2.生成N列N行的值: 3.取到N行N列的值: 4.取到不同的行: 5.从表单中取行和列: 6.使用循环遍历多列,再遍历每一列的每个数据: 7.先遍历2行到6行,再遍历每一行的每一个数据: 8.获取到2行2列的值: 9.rowOfCellObjects访问每一行:......
  • python123——模拟生成微软序列号
    模拟生成微软序列号描述微软产品一般都一个25位的序列号,是用来区分每份微软产品的产品序列号。产品序列号由五组被“-”分隔开,由字母数字混合编制的字符串组成,每组字符串是由五个字符串组成。如:36XJE-86JVF-MTY62-7Q97Q-6BWJ2每个字符是取自于以下24个字母及数字之中的一个:BCE......
  • python winrm 远程操作Windows服务器
    winrm:Windows远程管理先确定被控机器开启winrm服务打开powershell命令行winrmenumeratewinrm快速配置winrmwinrmquickconfig需要加域配置winrmwinrmsetwinrm/config/service/auth@{Basic="true"}winrmsetwinrm/config/service@{AllowUnencrypted="true"}pyt......
  • python入门6
    最基本内置数据类型介绍每个对象都有类型,python中最基本的内置数据类型有:1、整型整数,2345,10,502.浮点型2、小数3.14或者科学计数法314e-23、布尔型表示真假,仅包含:True、False4、字符串型由字符组成的序列。“abc”,"student”,”程序员”数字Python支持整数(如∶50,520)和......