1

XML ドキュメントを Python データ構造に変換しようとしています。

xml のサンプル:

    <SOFTWARES>
        <PUBLISHER>Microsoft Corporation</PUBLISHER>
        <NAME>Microsoft Office Visio 2010</NAME>
        <VERSION>14.0.6029.1000</VERSION>
        <FOLDER>C:/Program Files/Microsoft Office/</FOLDER>
        <LANGUAGE>Language Neutral</LANGUAGE>
        <INSTALLDATE>2012/03/29</INSTALLDATE>
    </SOFTWARES>
    <SOFTWARES>
        <PUBLISHER>Microsoft</PUBLISHER>
        <NAME>Update for Microsoft Office 2010 (KB2553310) 64-Bit Edition</NAME>
        <INSTALLDATE>0000//0/0/00</INSTALLDATE>
    </SOFTWARES>

lxml.de には、この優れた例があります: http://lxml.de/FAQ.html#how-can-i-map-an-xml-tree-into-a-dict-of-dicts

def xml_to_dict(element):
    return element.tag, dict(map(xml_to_dict, element)) or element.text

これにより、欠陥が 1 つしかない dicts の大きな dicts が生成されます。既存のキーを上書きします。したがって、プロセスが完了すると、次のようになります。

'SOFTWARES': {
    'PUBLISHER': 'Microsoft',
    'NAME': 'Update for Microsoft Office 2010 (KB2553310) 64-Bit Edition',
    'INSTALLDATE': '0000//0/0/00',
},

その前にいくつあったかに関係なく、最後の SOFTWARES ブロックです。lxml の関数は再帰的であるためうまく機能しますが、重複したキーを処理できるものを書きたいと考えています。できれば SOFTWARES dict をリストに放り込むだけで、時が来たらリストを反復処理できます。

4

1 に答える 1

1

この特定のケースの最も簡単な解決策:

map(xml_to_dict, xml_document)

これにより、辞書のリストが表示されます。

于 2012-04-11T14:51:06.197 に答える