怎么用Python将XML转换为YAML

来源:菜鸟站长作者:俊华头衔:草根站长
导读:本期聚焦于小伙伴创作的《怎么用Python将XML转换为YAML》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《怎么用Python将XML转换为YAML》有用,将其分享出去将是对创作者最好的鼓励。

XML和YAML都是常用的数据交换格式,XML结构严谨但冗余度高,YAML语法简洁可读性更强,很多场景下需要将XML数据转换为YAML格式。实现这个转换的核心逻辑是先解析XML获取结构化数据,再将结构化数据按照YAML的规则输出。

怎么用Python将XML转换为YAML

准备工作

首先需要安装两个核心依赖库,一个是用于解析XML的xmltodict,另一个是用于生成YAML的PyYAML,可以通过pip命令安装:

pip install xmltodict pyyaml

核心转换步骤

1. 解析XML为字典

xmltodict库可以将XML字符串或者文件解析为Python字典,保留原有的嵌套结构,这是转换的第一步。示例代码如下:

import xmltodict

# 示例XML内容
xml_content = """
<user>
    <name>张三</name>
    <age>25</age>
    <hobbies>
        <hobby>阅读</hobby>
        <hobby>跑步</hobby>
    </hobbies>
</user>
"""

# 解析XML为字典
xml_dict = xmltodict.parse(xml_content)
print(xml_dict)

上述代码执行后得到的字典结构如下:

{
    "user": {
        "name": "张三",
        "age": "25",
        "hobbies": {
            "hobby": ["阅读", "跑步"]
        }
    }
}

2. 字典转换为YAML

得到字典后,使用PyYAMLyaml.dump方法就可以将字典转换为YAML格式的内容,需要注意设置合适的参数保证输出格式符合常规YAML规范。

import yaml

# 将字典转换为YAML字符串
yaml_content = yaml.dump(xml_dict, allow_unicode=True, sort_keys=False)
print(yaml_content)

其中allow_unicode参数设置为True可以保证中文正常显示,sort_keys设置为False可以避免字典的键被自动排序,保留原有的结构顺序。

3. 完整转换函数

将上面的步骤整合,就可以得到一个通用的XML转YAML的函数,支持从文件读取XML内容并输出YAML文件:

import xmltodict
import yaml

def xml_to_yaml(xml_file_path, yaml_file_path):
    # 读取XML文件内容
    with open(xml_file_path, "r", encoding="utf-8") as f:
        xml_content = f.read()
    
    # 解析XML为字典
    xml_dict = xmltodict.parse(xml_content)
    
    # 转换为YAML并写入文件
    with open(yaml_file_path, "w", encoding="utf-8") as f:
        yaml.dump(xml_dict, f, allow_unicode=True, sort_keys=False)
    
    print(f"转换完成,YAML文件已保存至{yaml_file_path}")

# 调用示例
# xml_to_yaml("input.xml", "output.yaml")

注意事项

  • XML中的属性会被xmltodict解析为以@开头的键,比如<user id="1">会解析为{"user": {"@id": "1"}},转换后YAML中也会保留这个格式,如果不需要可以提前处理字典。
  • XML中单个子节点和多个同名子节点的解析结果不同,单个子节点会解析为值,多个同名子节点会解析为列表,转换时需要根据实际XML结构调整逻辑。
  • 如果XML内容包含<>&等特殊字符,xmltodict会自动处理转义,不需要额外操作。

常见问题处理

如果遇到XML解析报错,首先检查XML格式是否合法,可以使用XML校验工具提前验证。如果YAML输出内容不符合预期,可以调整yaml.dump的参数,比如设置default_flow_style参数控制列表的显示格式:

# 让列表以块格式显示,更符合YAML常规写法
yaml_content = yaml.dump(xml_dict, allow_unicode=True, sort_keys=False, default_flow_style=False)

PythonXMLYAMLxml_to_dictPyYAML修改时间:2026-07-10 16:12:33

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。