如何在Python中将列表对象转换为XML?
我有一个对象,它是列表类型的。用 print type(result)
打印出来的结果是 <type 'list'>
。有没有什么函数可以自动把它转换成 XML 格式呢?
4 个回答
-1
查看一下objectify
和来自lxml
的E-factory。
E = objectify.E
result = [{ 'a': 1 }, {'a': 2} , {'a': 3}]
child_tags = [E.mytag(el) for el in result]
xml = E.root(*child_tags)
etree.tostring(xml, pretty_print=True)
E可以为任何标签提供构造器。在我的例子中,你会为列表中的每个元素生成一个mytag
标签,并且每个标签会有对应于字典键的属性。所以最终生成的xml会是:
<root xmlns:py="http://codespeak.net/lxml/objectify/pytype"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mytag a="1"/>
<mytag a="2"/>
<mytag a="3"/>
</root>
-1
我刚开始学Python,但我觉得这段代码能完成任务,而且很容易理解 :)
persons_list = [['Ahmed', '16', 'white'], ['Housein', '16', 'green']]
f = open('data.xml', 'w')
f.write('<?xml version="1.0" encoding="UTF-8"?>')
f.write('<persons>')
for person in persons_list :
f.write('<person>')
f.write('<name>' + person[0] + '</name>')
f.write('<age>' + person[1] + '</age>')
f.write('<color> ' + person[2] + '</color>')
f.write('</person>')
f.write('</persons>')
f.close()
不过我觉得这不是最好的做法 ;)
0
有一个非常简单的 dict2xml 库,可以很轻松地完成这个任务,甚至像嵌套列表这样的复杂结构也能很好地支持:
示例:
from dict2xml import dict2xml as xmlify
data = [
{"a": 1},
{"a": 2},
{"a": 3},
{"a": [
{"b": 1},
{"b": 2},
{"b": 3},
]}
]
print xmlify(data, wrap="all", indent=" ")
结果:
<all>
<a>1</a>
</all>
<all>
<a>2</a>
</all>
<all>
<a>3</a>
</all>
<all>
<a>
<b>1</b>
</a>
<a>
<b>2</b>
</a>
<a>
<b>3</b>
</a>
</all>
1
使用 yattag 这个库:
from yattag import Doc
doc, tag, text = Doc().tagtext()
with tag('persons'):
for person in persons_dict:
doc.stag('person', **person):
result = doc.getvalue()