在Python中读取XML文件,在一行中搜索键并替换值

时间:2018-03-07 07:45:38

标签: python xml xpath key

我有一个看起来像这样的XML文件!

<?xml version="1.0"?>
 <root>    
  <child>    
   <add key="setid" value=".\print\data1" />    
    <add key="getid" value=".\print\data2" />    
    <add key="holdingid" value=".\print\data3" />    
   </child>    
 </root>

我想读取XML中的一行,搜索一个键匹配并用.\donotpritnnt\data1

替换该行中的值

我可以使用XMLPOKE和xpath在NANT中执行此操作。 尝试使用dict,list(替换为positionID),拆分(这里没有足够好的代码显示)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

假设您的XML代码位于工作目录中的 test.xml

new_content = []
with open("test.xml") as f:
    content = f.readlines()
    for line in content:
        newline = line
        if 'key="setid"' in line:
            newline =  line[:line.find("value=")] + 'value=".\donotpritnnt\data1" />\n'
        new_content += [newline]
with open('test.xml', 'w') as f:
    for line in new_content:
        f.write(line)

它不是最好的方式,但它适用于您提供的示例,并且可能是可扩展的,因为它遍历文件并查看每一行。可能通过使用 regex 等进一步改进。