如何在Python中展平XML文件

Jam*_*sev 5 python xml

我可以使用用于扁平化XML文件的库或机制吗?

现有:

<A>
    <B>
        <ConnectionType>a</ConnectionType>
        <StartTime>00:00:00</StartTime>
        <EndTime>00:00:00</EndTime>
        <UseDataDictionary>N</UseDataDictionary>
Run Code Online (Sandbox Code Playgroud)

期望的:

A.B.ConnectionType = a
A.B.StartTime = 00:00:00
A.B.EndTime = 00:00:00
A.B.UseDataDictionary = N
Run Code Online (Sandbox Code Playgroud)

ƘɌỈ*_*ƬƠƑ 6

通过xmltodict将XML文件转换为字典,并结合此答案以使a变平dict,这应该是可能的。

例:

# Original code: https://codereview.stackexchange.com/a/21035
from collections import OrderedDict

def flatten_dict(d):
    def items():
        for key, value in d.items():
            if isinstance(value, dict):
                for subkey, subvalue in flatten_dict(value).items():
                    yield key + "." + subkey, subvalue
            else:
                yield key, value

    return OrderedDict(items())

import xmltodict

# Convert to dict
with open('test.xml', 'rb') as f:
    xml_content = xmltodict.parse(f)

# Flatten dict
flattened_xml = flatten_dict(xml_content)

# Print in desired format
for k,v in flattened_xml.items():
    print('{} = {}'.format(k,v))
Run Code Online (Sandbox Code Playgroud)

输出:

A.B.ConnectionType = a
A.B.StartTime = 00:00:00
A.B.EndTime = 00:00:00
A.B.UseDataDictionary = N
Run Code Online (Sandbox Code Playgroud)