[xmltodict]读取XML文件

参考:xmltodict 0.12.0

之前学习过使用包xml.etree.cElementTree来读取XML文件,今天发现一个新的包xmltodict,将XML文件转换成字典形式进行读取

安装

$ conda install xmltodict

关键函数

解析给定的XML输入并将其转换为字典

def parse(xml_input, encoding=None, expat=expat, process_namespaces=False,
          namespace_separator=':', disable_entities=True, **kwargs):

参数xml_input为字符串(XML文件,不是文件名)或者文件对象

输入字典,生成XML文件字符串

def unparse(input_dict, output=None, encoding='utf-8', full_document=True,
            short_empty_elements=False,
            **kwargs):

示例

输入一个xml格式字符串,使用函数parse解析成字典;使用函数unparse将字典解析成xml格式字符串

import xmltodict

xxxml_str = "<source><database>OK HAHAHA</database></source>"

xml_parse_dict = xmltodict.parse(xxxml_str)
print(xml_parse_dict)
print(xml_parse_dict['source']['database'])

dict_unparse_xml = xmltodict.unparse(xml_parse_dict)
print(dict_unparse_xml)
# 输出
OrderedDict([('source', OrderedDict([('database', 'OK HAHAHA')]))])
OK HAHAHA
<?xml version="1.0" encoding="utf-8"?>
<source><database>OK HAHAHA</database></source>

还可以使用parse函数直接解析文件对象

import xmltodict

with open('./data/image-localization-dataset/training_images/eggplant_36.xml', 'rb') as f:
    xml_parse_dict = xmltodict.parse(f)
    print(xml_parse_dict)