在实际的中,有时候需要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": "u5f20u4e091", "sex": "u7537", "age": "19"}, {"name": "u674eu56db2", "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"?>
当然了这些还可以读写带文件中的,增加对应的文件操作即可