从Python结构构建XML

2 投票
2 回答
1175 浏览
提问于 2025-04-17 09:12

有没有办法从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>

撰写回答