【问题标题】:XML to JSON <P> ends up as listXML 到 JSON <P> 以列表形式结束
【发布时间】:2020-12-08 19:45:01
【问题描述】:

我有许多 xml 文件,我会将它们转换为 JSON,然后将其加载到 openRefine 或 pandas 数据帧中进行分析。 xml文件看起来像

                <NATURE_QUANTITY_SCOPE>
                    <TOTAL_QUANTITY_OR_SCOPE>
                        <P>Entreprisens omfang:</P>
                        <P>Arbeidet omfatter bl.a følgende:</P>
                        <P>•    Ramming av stålrør</P>
                        <P>•    Løsmassearbeider, graving over og under vann, erosjonssikring</P>
                        <P>•    Forskalings-, armerings, og betongarbeider i stålrørspeler, kaipir og bru</P>
                        <P>•    Elektroarbeider </P>
                        <P>Arbeidet består bl.a av levering og montering av:</P>
                        <P>•    aggregathus</P>
                        <P>•    pullere og T-pullere</P>
                        <P>•    lodd til redningsleider</P>
                        <P>•    dumperdekk</P>
                        <P>•    aggregat og sylindere</P>
                        <P>•    sperrebom</P>
                        <P>Videre består arbeidet bl.a av mottak og montering av: </P>
                        <P>•    brulager inkl. fester til landkar, fendring     </P>
                        <P>•    heisetårn </P>
                        <P>•    sikringsbjelke</P>
                        <P>•    horisontale stålrør</P>
                        <P>•    komplette fenderpanel med innstøpingsgods/kjetting/gummifendere etc.</P>
                        <P>•    innstøpingsgods for dumperdekk</P>
                        <P>•    innstøpingsgods for overgangsplate</P>
                        <P>•    innstøpingsgods for horisontale stålrør</P>
                        <P>•    alle bolter for innstøpingsgods/vemohylser/skruer etc.</P>
                        <P>•    redningsleider</P>
                        <P>•    rekkverk og port kai</P>
                        <P>•    fotlist kai</P>
                    </TOTAL_QUANTITY_OR_SCOPE>
                </NATURE_QUANTITY_SCOPE>

我试过这个代码

import xmltodict
import os
import json 
path = r"C:\Users\ujorbjo00\Documents\xmltodict test"
for filename in os.listdir(path):
    if not filename.endswith('.xml'):
        continue

    fullname = os.path.join(path, filename)

    with open(fullname, 'r', encoding='utf_8') as f:
        xmlString = f.read()

    jsonString = json.dumps(xmltodict.parse(xmlString, encoding='utf-8',process_namespaces=True, xml_attribs=True))

    with open(fullname[:-4] + ".json", 'w', encoding='utf_8') as f:
        f.write(jsonString)

但 JSON 文件看起来像

"NATURE_QUANTITY_SCOPE": {
                        "TOTAL_QUANTITY_OR_SCOPE": {
                            "P": ["Entreprisens omfang:", "Arbeidet omfatter bl.a f\u00f8lgende:", "\u2022\tRamming av st\u00e5lr\u00f8r", "\u2022\tL\u00f8smassearbeider, graving over og under vann, erosjonssikring", "\u2022\tForskalings-, armerings, og betongarbeider i st\u00e5lr\u00f8rspeler, kaipir og bru", "\u2022\tElektroarbeider", "Arbeidet best\u00e5r bl.a av levering og montering av:", "\u2022\taggregathus", "\u2022\tpullere og T-pullere", "\u2022\tlodd til redningsleider", "\u2022\tdumperdekk", "\u2022\taggregat og sylindere", "\u2022\tsperrebom", "Videre best\u00e5r arbeidet bl.a av mottak og montering av:", "\u2022\tbrulager inkl. fester til landkar, fendring", "\u2022\theiset\u00e5rn", "\u2022\tsikringsbjelke", "\u2022\thorisontale st\u00e5lr\u00f8r", "\u2022\tkomplette fenderpanel med innst\u00f8pingsgods/kjetting/gummifendere etc.", "\u2022\tinnst\u00f8pingsgods for dumperdekk", "\u2022\tinnst\u00f8pingsgods for overgangsplate", "\u2022\tinnst\u00f8pingsgods for horisontale st\u00e5lr\u00f8r", "\u2022\talle bolter for innst\u00f8pingsgods/vemohylser/skruer etc.", "\u2022\tredningsleider", "\u2022\trekkverk og port kai", "\u2022\tfotlist kai"]
                        }

这是 26 行,没有挪威字符的编码!

_ - DOFFIN_ESENDERS - FORM_SECTION - CONTRACT - FD_CONTRACT - OBJECT_CONTRACT_INFORMATION - QUANTITY_SCOPE - NATURE_QUANTITY_SCOPE - TOTAL_QUANTITY_OR_SCOPE

_ - DOFFIN_ESENDERS - FORM_SECTION - CONTRACT - FD_CONTRACT - OBJECT_CONTRACT_INFORMATION - QUANTITY_SCOPE - NATURE_QUANTITY_SCOPE - TOTAL_QUANTITY_OR_SCOPE - P

_ - DOFFIN_ESENDERS - FORM_SECTION - CONTRACT - FD_CONTRACT - OBJECT_CONTRACT_INFORMATION - QUANTITY_SCOPE - NATURE_QUANTITY_SCOPE - TOTAL_QUANTITY_OR_SCOPE - P – P

我什么都有

一行

【问题讨论】:

  • 您可以编辑问题并显示您的数据框应该是什么样子吗?

标签: json python-3.x xml xml-parsing xmltodict


【解决方案1】:

我不确定我是否理解您问题中的所有内容,但对于挪威字符问题,您可以查看this post

至于 XML 到 JSON 转换成一个列表,这是意料之中的。在转换中,XML 标签被转换为 JSON 字典键,并且字典中的键与 XML 中的标签不同,是唯一的,因此同一标签下的所有内容都被转储在同一键下。它也应该反过来工作——想想一个 HTML 列表:每个列表元素都被同一个 &lt;li&gt; 标记包围。

如果这不是您想要的行为,请指定想要的行为。

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多