Python对含有命名空间的xml文件中某个标签属性值替换实例

需求:根据ID定位标签,实现修改value属性的值

# -*- encoding:utf-8 -*-

from xml.etree.ElementTree import ElementTree
import sys

def replaceidvalue(idnum,valuenum):
    cvnodeid = idnum
    # 1. 读取xml文件
    tree = ElementTree()
    tree.parse('./applicationContext-quartz.xml')
    # 添加root节点
    # newele = Element('framework')
    # newele.insert(0, tree.getroot())
    # newtree = ElementTree(newele)
    # node = []
    # for n in newtree.iter():
    #     node.append(n)
    '''不添加root节点操作'''
    node = []
    # 获取到xml文件中所有的节点,包括父节点
    for n in tree.iter():
        # 找到每个节点中的所有的tag,也即标签
        node.append(n.tag)

    # 找到父节点下,第一级子节点
    nodes = tree.findall(node[1])
    tmp = []
    tmpvalue = []
    for node in nodes[0:-1]:
        # 把节点的ID共同存入到一个数组中
        tmpvalue.append(node.attrib['id'])
        # 把第二个节点的所以子节点存入到数组中
        tmp.append(node.getchildren()[1])

    # C. 修改节点属性
    cvnumber = len(tmpvalue)
    for i in range(cvnumber):
        if tmpvalue[i] == cvnodeid:
            # 给要修改的属性赋予新值,也即对属性值的修改
            tmp[i].set('value',valuenum)
            break
        else:
            print('未找到想要修改的ID!!!')

    # 6. 输出到结果文件
    tree.write("./out.xml", encoding="utf-8", xml_declaration=True)

# 判断从cmd命令行输入的参数是否为空,执行命令:python 文件名.py 参数1 参数2 参数3.....
# len(sys.argv)计算的是参数的个数,sys.argv是个列表所以只能用len计算个数,不能用count
if len(sys.argv) <= 1:
    exit()
else:
    replaceidvalue(sys.argv[1],sys.argv[2])

执行过程:打开cmd,进入到你存放该脚本的目录下,输入Python 文件名.py 用来定位的属性(也即查询标签的属性) 要修改的值。
上述代码可能不能全部照搬,可以自己做出适当的修改,实现自己想要的功能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值