我有这样的 XML 文件:
<root>
<key0>value</key0>
<key1>value</key1>
<key2>value</key2>
</root>
将此类文件转换为键值结构很容易。让我们在 Python dict 中展示结果,例如:
{'key0': 'value', 'key1': 'value', 'key2': 'value'}
现在他们添加了嵌套元素:
<root>
<key0>value</key0>
<key1>value</key1>
<key2>value</key2>
<key3>
<sth0>value</sth0>
<sth1>value</sth1>
</key3>
</root>
仍然很容易:
{'key0': 'value', 'key1': 'value', 'key2': 'value', 'key3/sth0': 'value', 'key3/sth1': 'value'}
我想你明白了。现在呢?
<root>
<key0>value</key0>
<key1>value</key1>
<key1>
<inner>value</inner>
</key1>
<key2>value</key2>
<key3>
<sth0>value</sth0>
<sth1>value</sth1>
</key3>
<key3>
<sth0>different value</sth0>
<sth1>different value</sth1>
</key3>
<key3>
<sth0>blah blah</sth0>
<sth1>blah blah</sth1>
</key3>
</root>
当然,经过一段时间的思考,我可以想出点什么来,但有件事告诉我,我会遇到越来越多的困难。所以问题是:是否有一种复杂的算法可以将类似简单的 XML 文件中的值“序列化”为键值形式?它必须是确定性可序列化和不可序列化的,并且不能丢失任何值。元素的顺序无关紧要(示例中的 Python dict 不是随机选择,这确实是我想要得到的)。
我知道 XML 可能非常复杂(命名空间、属性等),但事实并非如此。我需要正确解决的唯一问题是呈现的嵌套值和相同键的相关多重性。