python 对xml文件中的节点进行替换,批量处理

作者在研究基于opencv的c++读取xml文件中的深度数据过程中,遇到了一个问题。具体如下:

这是作者找的原xml深度数据文件,但是读取不出来,读取程序如下:

经过研究,自己的c++程序没有问题,问题出在xml中的width与height节点,作者通过尝试发现将width改为cols,同时height改为rows就可以读取出来。

于是问题转化为:如何批量将xml文件中的width与height节点替换为cols与rows

代码如下:

#对xml中的节点进行替换,过程是:先删除不要的节点,再添加需要的节点。
import os
import glob
from xml.etree import ElementTree as ET

xml_dir = r'C:\Users\Carry\Downloads\depth\depth\s01_e01'
xml_list = glob.glob(xml_dir + '/*.xml')
for xml in xml_list: #xml_list是一个数组,存储文件夹下所有xml文件
    name = os.path.basename(xml)
    name = name.split('.')[0] #name表示去掉后缀的文件名

    per = ET.parse(xml) #xml表示xml文件路径
    root = per.getroot()#获取根节点

    src = per.findall(name)  #src是个数组
    src[0].remove(src[0].find('height'))#删除height节点
    src[0].remove(src[0].find('width')) #删除width节点

    cols = ET.Element('cols') #创建cols节点
    cols.text = '320'
    rows = ET.Element('rows') #创建rows节点
    rows.text = '240'
    src[0].insert(0,cols) #插入cols节点,第一个参数表示插入位置,亦可以用append(),但只能插入到src[0]父节点下的末尾
    src[0].insert(1,rows)

    per.write(xml,encoding='utf-8',xml_declaration=True)#该处最好加上后面两个参数,这样重新写入的xml文件中才会包含头部说明

print('修改完成!')

如果只修改某个xml文件,去掉for循环即可

以上代码是将height、width替换为rows,cols。使用者要替换节点为其他名字,稍微修改对应位置即可,无伤大雅

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值