簡體   English   中英

如何在Python中將XML文件解析為字典?

[英]How can I parse a XML file to a dictionary in Python?

我正在嘗試使用Python庫minidom (甚至嘗試過xml.etree.ElementTree API)來解析XML文件。

我的XML(resource.xml)

<?xml version='1.0'?> 
<quota_result xmlns="https://some_url">
    </quota_rule>
    <quota_rule name='max_mem_per_user/5'>
        <users>user1</users>
        <limit resource='mem' limit='1550' value='921'/>
    </quota_rule>
    <quota_rule name='max_mem_per_user/6'>
        <users>user2 /users>
        <limit resource='mem' limit='2150' value='3'/>
    </quota_rule>
</quota_result>

我想解析此文件並將信息以以下形式存儲在字典中並能夠訪問它:

dict={user1=[resource,limit,value],user2=[resource,limit,value]}

到目前為止,我只能執行以下操作:

docXML = minidom.parse("resource.xml")
for node in docXML.getElementsByTagName('limit'): 
    print node.getAttribute('value')

您可以使用getElementsByTagNamegetAttribute來跟蹤結果:

dict_users = dict()
docXML = parse('mydata.xml')
users= docXML.getElementsByTagName("quota_rule")
for node in users:
    user = 'None'
    tag_user = node.getElementsByTagName("users") #check the length of the tag_user to see if tag <users> is exist or not
    if len(tag_user) ==0: 
        print "tag <users> is not exist"
    else:
        user = tag_user[0]
    resource = node.getElementsByTagName("limit")[0].getAttribute("resource")

    limit = node.getElementsByTagName("limit")[0].getAttribute("limit")

    value = node.getElementsByTagName("limit")[0].getAttribute("value")

    dict_users[user.firstChild.data]=[resource, limit, value]

    if user == 'None':
        dict_users['None']=[resource, limit, value]
    else:
        dict_users[user.firstChild.data]=[resource, limit, value]

print(dict_users) # remove the <users>user1</users> in xml

輸出:

 tag <users> is not exist
{'None': [u'mem', u'1550', u'921'], u'user2': [u'mem', u'2150', u'3']}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM