从Python结构构建XML

时间:2011-12-29 10:54:50

标签: python xml

是否可以从Python结构(例如嵌套列表,字典等)构建XML字符串,或者这是一个无意义的问题?

有没有标准工具?

由于

2 个答案:

答案 0 :(得分:4)

标准库中没有对象到XML的序列化,但有pyxser

答案 1 :(得分: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>