【问题标题】:Read and write value in xml based on attribute基于属性在xml中读取和写入值
【发布时间】:2012-10-16 08:31:40
【问题描述】:

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

<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,它将读取节点的所有字符串,我如何通过仅读取值来限制并且其他变量保持不变?

【问题讨论】:

    标签: python xml


    【解决方案1】:

    这是一个迭代文档中所有设备以及设备中所有变量的示例:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 2013-11-27
      相关资源
      最近更新 更多