Python无内置字典转XML函数,可用xml.etree.ElementTree手动构建(推荐,无依赖)或dicttoxml库一键转换;需注意键名合法性、特殊字符转义、列表与嵌套处理。
Python本身没有内置函数直接把字典转成XML,但可以用标准库xml.etree.ElementTree手动构建,或借助第三方库如dicttoxml快速实现。关键在于理解字典结构与XML层级的对应关系,避免嵌套混乱或特殊字符报错。
适合结构较简单、需精细控制XML格式的场景。核心思路是递归遍历字典,为每个键创建子元素,值设为文本内容,嵌套字典则递归生成子节点。
- ...
)、&等需自动转义,ElementTree默认处理,无需手动html.escape
{"root": {"name": "Alice", "age": 30}}转为Alice 30
安装:pip install dicttoxml。一行代码即可,自动处理嵌套、列表、类型转换(如数字不加引号)、中文编码。
xml = dicttoxml.dicttoxml(data, custom_root='root', attr_type=False)
attr_type=False禁用类型属性(否则会加type="int"等)xml.decode('utf-8')
ignore_none=True跳过XML标签名不能含空格、冒号、数字开头,字典键若不合规需预处理;键名为xml、xmlns等保留字可能引发问题;时间对象、自定义类实例需先转为字符串。
re.sub(r'[^a-zA-Z0-9_]', '_', key)清洗dicttoxml默认用item作标签名,可通过item_func参数自定义ET.tostring(root, encoding='unicode', method='xml')获取字符串兼顾可控性与便捷性,处理常见异常:
def dict_to_xml(data, root_name="root"):不复杂但容易忽略细节,选ElementTree还是dicttoxml,取决于你是否愿意多装一个包以及对输出格式的控制需求。