首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python第三方模块 -- xmltodict模块

python第三方模块 -- xmltodict模块

作者头像
雷子
发布2023-09-25 10:31:11
发布2023-09-25 10:31:11
4970
举报

在实际的中,有时候需要xml转成dict方便后续处理,那么如何实现呢?可以用xmltodict,安装方式:

代码语言:javascript
复制
pip3 install xmltodict

我们看下如何使用

代码语言:javascript
复制
import xmltodict
import json

xml_str = '''<school>
    <teachers>
        <teacher>
            <name>leizi</name>
            <course>englist</course>
        </teacher>
        <teacher>
            <name>Bob</name>
            <course>PE</course>
        </teacher>
    </teachers>
    <students>
        <student>
            <name>张三1</name>
            <sex>男</sex>
            <age>19</age>
        </student>
        <student>
            <name>李四2</name>
            <sex>女</sex>
            <age>29</age>
        </student>
    </students>
</school>'''

new_dict_obj = xmltodict.parse(xml_str)  # 返回一个OrderedDict类型的对象
json_str = json.dumps(new_dict_obj)  # 使用内置的json模块转换成json
print(new_dict_obj)
print(json_str)

看下最后的结果

代码语言:javascript
复制
OrderedDict([('school', OrderedDict([('teachers', OrderedDict([('teacher', [OrderedDict([('name', 'leizi'), ('course', 'englist')]), OrderedDict([('name', 'Bob'), ('course', 'PE')])])])), ('students', OrderedDict([('student', [OrderedDict([('name', '张三1'), ('sex', '男'), ('age', '19')]), OrderedDict([('name', '李四2'), ('sex', '女'), ('age', '29')])])]))]))])
{"school": {"teachers": {"teacher": [{"name": "leizi", "course": "englist"}, {"name": "Bob", "course": "PE"}]}, "students": {"student": [{"name": "\u5f20\u4e091", "sex": "\u7537", "age": "19"}, {"name": "\u674e\u56db2", "sex": "\u5973", "age": "29"}]}}}

那如何转成xml,直接上代码

代码语言:javascript
复制
new_xml = xmltodict.unparse(new_dict_obj)# 这里直接放dict对象,不要放json字符串
print(new_xml)

结果:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<school>
   <teachers>
    <teacher>
    <name>leizi</name>
    <course>englist</course>
    </teacher>
    <teacher>
    <name>Bob</name>
    <course>PE</course>
    </teacher>
    </teachers>
    <students>
    <student>
    <name>张三1</name>
    <sex>男</sex>
    <age>19</age>
    </student>
    <student>
    <name>李四2</name>
    <sex>女</sex>
    <age>29</age>
    </student></students></school>

可以发现在打印结果的时候

增加了一个

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>

当然了这些还可以读写带文件中的,增加对应的文件操作即可

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-24 08:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档