0

featureこのxmlの構造にpythonのminidomを使用して、辞書に入れる最短のコード/最速の方法は何でしょうか:

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns       = "http://www.w3.org/ns/widgets"
        id          = "http://example.org/exampleWidget"
        version     = "2.0 Beta"
        height      = "200"
        width       = "200"
        viewmodes   = "fullscreen">

<feature name="http://example.com/camera" state="true"/>
<feature name="http://example.com/bluetooth" state="true"/>
<feature name="http://example.com/sms" state="true"/>
<feature name="http://example.com/etc" state="false"/>
</widget>

今のところ、ウィジェットの属性だけに興味はありません。

出力は次のようになります feature["camera"] = true feature["etc"] = false

4

1 に答える 1

1
from xml.dom.minidom import parseString
from os.path import basename

dom = parseString(raw_xml)

feature = {}
for f in dom.getElementsByTagName('feature'):
    name = basename(f.getAttribute('name'))
    state = f.getAttribute('state').lower() == 'true'
    feature[name] = state

または短い:

dict([(basename(f.getAttribute('name')), f.getAttribute('state').lower() == 'true')
  for f in parseString(raw).getElementsByTagName('feature')])
于 2012-08-14T08:25:50.443 に答える