从Python结构构建XML
有没有办法从Python的数据结构(比如嵌套的列表、字典等等)生成一个XML字符串?这个问题有意义吗?
有没有什么标准的工具可以做到这一点?
谢谢!
2 个回答
4
标准库里没有把对象转换成XML格式的功能,不过有一个叫pyxser的工具可以做到这一点。
3
如果你需要一些自定义的格式,可以使用 xml.etree.ElementTree
来编程生成这样的格式。比如说:
from xml.etree import ElementTree
def dict2xml(d, parent=None):
if parent is None:
parent = ElementTree.Element('xml')
for key, value in d.items():
if isinstance(value, str):
element = ElementTree.SubElement(parent, key)
element.text = value
elif isinstance(value, dict):
element = ElementTree.SubElement(parent, key)
dict2xml(value, element)
elif isinstance(value, list):
for text in value:
element = ElementTree.SubElement(parent, key)
element.text = str(text)
else:
raise TypeError('Unexpected value type: {0}'
.format(type(value)))
return parent
d = {'a': 'a contents',
'b': {'c': 'c contents',
'd': 'd contents',
},
'e': range(3),
}
print ElementTree.tostring(dict2xml(d))
这段代码会生成以下输出:
<xml><a>a contents</a><b><c>c contents</c><d>d contents</d></b><e>0</e><e>1</e><e>2</e></xml>