【问题标题】:Using xmltodict for Python, how can I reference a non-specific XML property and change the value?使用 Python 的 xmltodict,我如何引用非特定的 XML 属性并更改值?
【发布时间】:2017-06-26 18:58:29
【问题描述】:

我有一个这样的 xml 文件:

<root processName="someName" >
    <Property name="FirstProp" value="one" />
    <Property name="SecondProp" value="two" />
    <Property name="ThirdProp" value="three" />
</root>

是否可以在不知道具体索引的情况下使用 xmltodict 找到属性“SecondProp”并将值从“二”更改为“十七”? (下)

代码:

import os
import xmltodict

text_file = open("testxml.xml", "r")
tst = text_file.read()

obj = xmltodict.parse(tst)

print(obj['root']['@processName'])
print(obj['root']['Property'][0])
print(obj['root']['Property'][1])
print(obj['root']['Property'][2])

输出:

someName
OrderedDict([('@name', 'FirstProp'), ('@value', 'one')])
OrderedDict([('@name', 'SecondProp'), ('@value', 'two')])
OrderedDict([('@name', 'ThirdProp'), ('@value', 'three')])

【问题讨论】:

    标签: python xml xmltodict


    【解决方案1】:

    您可以遍历obj['root']['Property'] 并找到您正在寻找的那个。使用 xmltodict 解析 XML 的方式,使 obj['root']['Property'] 成为列表而不是字典。

    例子:

    for x in obj['root']['Property']:
        if x['@name'] == 'SecondProp':
            # do whatever you want
    

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2013-02-14
      • 2021-09-29
      相关资源
      最近更新 更多