2012-10-16 75 views
0

我有一个如下的xml文件,我想从我的设备读取数据并使用python脚本将数据写入“value”列。基于属性在xml中读取和写入值

<TopoDefs> 
    <Device Name="SNB" LogicalType="CORE" 
      IdCode="0x03886A21" Mask="0xf0000000"> 
    <Variable name="A0" value="0x52001321" type="GREEN" /> 
    <Variable name="A1" value="0x51001321" type="GREEN" /> 
    <Variable name="A2" value="0x03001321" type="GREEN" /> 
    <Variable name="A3" value="0x14001321" type="GREEN" /> 
    <Variable name="B0" value="0x5A001321" type="BLUE" /> 
    <Variable name="B1" value="0x51001321" type="BLUE" /> 
    <Variable name="B2" value="0x04001321" type="BLUE" /> 
    <Variable name="B3" value="0x05001321" type="BLUE" /> 
    </Device> 
</TopoDefs> 

我完全是一个python脚本的新学习者。如何解析xml文件并指向属性值以被一个将会一直改变的新值所取代? 如果我使用getElementsByTagName和nodevalue,它会读取节点的所有字符串,我如何通过只读取值来限制,而其他变量保持不变?

回答

0

这里有一个例子是遍历文件中的所有设备,并在设备的所有变量:

xmlstr = """<TopoDefs> 
    <Device Name="SNB" LogicalType="CORE" 
      IdCode="0x03886A21" Mask="0xf0000000"> 
    <Variable name="A0" value="0x52001321" type="GREEN" /> 
    <Variable name="A1" value="0x51001321" type="GREEN" /> 
    <Variable name="A2" value="0x03001321" type="GREEN" /> 
    <Variable name="A3" value="0x14001321" type="GREEN" /> 
    <Variable name="B0" value="0x5A001321" type="BLUE" /> 
    <Variable name="B1" value="0x51001321" type="BLUE" /> 
    <Variable name="B2" value="0x04001321" type="BLUE" /> 
    <Variable name="B3" value="0x05001321" type="BLUE" /> 
    </Device> 
</TopoDefs>""" 

import xml.etree.ElementTree as ET 
document = ET.fromstring(xmlstr) 

for dev in document.iter('Device'): 
    for var in dev.iter('Variable'): 
     var.set('value', 'new_value') 

print ET.tostring(document)