所以基本上,我想用从python字典中的数据生成的元素生成一个XML,其中的标签是字典的键,文本是字典的值。我不需要为项目提供属性,我想要的输出看起来像这样:
<AllItems>
<Item>
<some_tag> Hello World </some_tag>
...
<another_tag />
</Item>
<Item> ... </Item>
...
</AllItems>
我尝试使用 xml.etree.ElementTree 包,通过创建树,将元素“AllItems”设置为根,如下所示:
from xml.etree import ElementTree as et
def dict_to_elem(dictionary):
item = et.Element('Item')
for key in dictionary:
field = et.Element(key.replace(' ',''))
field.text = dictionary[key]
item.append(field)
return item
newtree = et.ElementTree()
root = et.Element('AllItems')
newtree._setroot(root)
root.append(dict_to_elem( {'some_tag':'Hello World', ...} )
# Lather, rinse, repeat this append step as needed
with open( filename , 'w', encoding='utf-8') as file:
tree.write(file, encoding='unicode')
在最后两行中,我尝试省略 open() 语句中的编码,省略 write() 方法中的编码并将其更改为 'UTF-8',我要么得到一个错误,即 "') 是 str 类型不可序列化
所以我的问题- 我想知道的是我应该如何使用上述格式从头开始创建 UTF-8 XML,是否有使用另一个包的更强大的解决方案,这将允许我正确处理 UTF-8人物?我没有与 ElementTree 结婚以获得解决方案,但我宁愿不必创建模式。提前感谢您的任何建议/解决方案!