首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >要在python中将列表类型对象转换为xml吗?

要在python中将列表类型对象转换为xml吗?
EN

Stack Overflow用户
提问于 2014-04-15 21:26:04
回答 4查看 6.4K关注 0票数 0

我有一个对象,它是列表类型的。print type(result)返回<type 'list'>。有没有自动转换成XML的函数?

EN

回答 4

Stack Overflow用户

发布于 2014-04-15 22:03:29

使用yattag库:

代码语言:javascript
运行
复制
from yattag import Doc

doc, tag, text = Doc().tagtext()

with tag('persons'):
    for person in persons_dict:
        doc.stag('person', **person):

result = doc.getvalue()
票数 2
EN

Stack Overflow用户

发布于 2014-04-15 21:59:00

有一个非常简单的dict2xml库可以很容易地做到这一点,即使是像嵌套列表这样的复杂结构也可以得到很好的支持:

示例:

代码语言:javascript
运行
复制
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="  ")

结果:

代码语言:javascript
运行
复制
<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
EN

Stack Overflow用户

发布于 2014-04-15 21:31:40

lxml检查objectify和E-factory。

代码语言:javascript
运行
复制
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,每个标记都有对应于dict键的属性。因此,生成的xml将是:

代码语言:javascript
运行
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23085118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档