【问题标题】:Parsing XML file to Nested DICT将 XML 文件解析为嵌套 DICT
【发布时间】:2021-03-12 14:27:13
【问题描述】:

我正在尝试将 XML 文件中的数据保存到嵌套字典中。在我的 XML 文件中,如下所示,我有多个名为 DOCUMENT 的标签,并且嵌套在其中我有一个可变数量的名为 LINK 的标签。然后,在链接中,我在 ADDRESS 标签内有一些 URL

<document>
    <description>blah, blah, blah</description>
    <link>
        <description>Document1</description>
        <address>url 1</address>
    </link>
    <link>
        <description>Document23</description>
        <address>url 2</address>
    </link>
    <link>
        <description>Document43</description>
        <address>url 3</address>
    </link>
    <regNum>201801289307</regNum>
    <order>3</order>
    <seqNum>24447778</seqNum>
    <codType>6</codType>
    <descType>Blah</descType>
</document>

我创建了一个这样的字典:

op = {}
op['doc_dict'] = {"descriDoc":[], "orderDoc":[], "seqNum":[], "codType":[], "descType":[]}
op['doc_dict']['link_dict'] = {"seqNum":[], "linkUrl":[]} 

我想实现一个 DICT,我可以使用 seqNum 中的值将 LINK 标记内的每个 URL 与其父 DOCUMENT 匹配> 标签

{'doc_dict': {'descriDoc': ["blah, blah, blah"], 'orderDoc': ["4"], 'seqNum': ["24447779"],
              'codType': ["6"], 'descType': ["Blah1"],
              'link_dict': {'seqNum': ["24447779"], 'linkUrl': ["url 5", "url 7", "url 9"]}}}

任何关于如何获得上述 DICT 的想法都会很棒。我所有的方法都失败了。

干杯,

【问题讨论】:

    标签: python-3.x xml xml-parsing elementtree


    【解决方案1】:

    我已经使用了列表理解并解决了这个问题。

    def edicao(filename): 
        op = []
        tree = ET.parse(filename) #read in the XML
    
        for item in tree.iter(tag = 'document'):
            doc = {}
            doc["descriDoc"] = item.find('description').text
            doc["orderDoc"] = item.find('order').text
            doc["seqNum"] = item.find('seqNum').text
            doc["links"] = [{'seqNum':item.find('seqNum').text,
                         'descricaoDoc':e.find('description').text,
                         'url':e.find('address').text} for e in item.findall('link')]
            op.append(doc)
    
       return op
    

    干杯,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-31
      • 2020-02-12
      • 2021-08-24
      • 2020-10-09
      • 2011-12-24
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      相关资源
      最近更新 更多