Python xmltodict包的用法(附带实例)
在网络运维自动化领域中,经常将 XML 数据转化为 Python 数据,以提高可读性。在 Python 程序中,可以使用 xmltodict 包,它可将 XML 数据和 Python 数据进行转换。
本文使用的 xmltodict 版本是 0.13,安装命令如下:
例如,使用 xmltodict 解析 XML 数据:
使用 xmltodict 将 Python 数据转换为 XML 数据,示例代码如下:
本文使用的 xmltodict 版本是 0.13,安装命令如下:
pip install xmltodict==0.13
XML数据转换为Python数据
xmltodict 的 parse() 函数可以将 XML 数据转换为 Python 数据,并将 XML 数据赋值给第一个参数 xml_input。例如,使用 xmltodict 解析 XML 数据:
import xmltodict import json xml_text = """<?xml version="1.0" encoding="UTF-8"?> <device> <name>netdevops01</name> <ip>192.168.137.1</ip> <vendor>华为</vendor> <online>true</online> <rack>0101</rack> <start_u>20</start_u> <end_u>21</end_u> <interface_usage>0.67</interface_usage> <interfaces> <interface>eth1/1</interface> <interface>eth1/2</interface> <interface>eth1/3</interface> </interfaces> <uptime>null</uptime> </device> """ data = xmltodict.parse(xml_input=xml_text) print(data)运行结果如下:
{'device': {'name': 'netdevops01', 'ip': '192.168.137.1', 'vendor': '华为', 'online': 'true', 'rack': '0101', 'start_u': '20', 'end_u': '21', 'interface_usage': '0.67', 'interfaces': {'interface': ['eth1/1', 'eth1/2', 'eth1/3']}, 'uptime': 'null'}}
Python数据转换为XML数据
unparse() 函数可将 Python 数据转换为 XML 数据,其使用场景并不多,读者了解即可。使用时,将 unparse() 函数的第一个参数 input_dict 赋值为 Python 字典数据。使用 xmltodict 将 Python 数据转换为 XML 数据,示例代码如下:
import xmltodict python_data = {'device':{'name': 'netdevops01', 'ip': '192.168.137.1', 'vendor': '华为', 'online': True, 'rack': '0101', 'start_u': 20, 'end_u': 21, 'interface_usage': 0.67, 'interfaces': ['eth1/1', 'eth1/2', 'eth1/3'], 'uptime': None}} # input_dict是要转换的Python数据 # output默认值为None,如果将其赋值为一个文件对象,就会将数据写入其中 xml_data = xmltodict.unparse(input_dict=python_data,output=None) print(xml_data)上述代码的运行结果如下:
<?xml version="1.0" encoding="utf-8"?> <device><name>netdevops01</name><ip>192.168.137.1</ip><vendor>华为</vendor><online>true </online><rack>0101</rack><start_u>20</start_u><end_u>21</end_u><interface_usage>0.67 </interface_usage><interfaces>eth1/1</interfaces><interfaces>eth1/2</interfaces><interfaces> eth1/3</interfaces><uptime></uptime></device>