2017-06-26 16 views
1

は私のようなxmlファイルを持っている:Pythonにxmltodictを使用すると、非特定のXMLプロパティを参照して値を変更するにはどうすればよいですか?

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

それは、xmltodictを使用して、「2」を「17」から特定のインデックスと変更値を知らなくてもプロパティ「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')]) 

答えて

0

あなたはobj['root']['Property']を反復処理し、あなたが探しているものを見つけることができます。 XMLがxmltodictで解析される方法は、obj['root']['Property']をdictではなくリストにします。

例:

for x in obj['root']['Property']: 
    if x['@name'] == 'SecondProp': 
     # do whatever you want 
関連する問題