Не думаю, что вы должны ожидать, что они оба будут одинаковыми в целом и всегда.
Целочисленные значения не приводятся к целым числам при автоматическом разборе, и все разбирается на строки, ноу вас есть несколько способов контролировать преобразование типов.Например, вы можете указать постпроцессор и попытаться преобразовать значения в целые числа для ключей, начинающихся с value
:
def postprocessor(path, key, value):
if key.startswith("value"):
try:
return key, int(value)
except (ValueError, TypeError):
return key, value
return key, value
test_data_re = xmltodict.parse(xml_str, dict_constructor=dict, postprocessor=postprocessor)
print("xml_str back to dict : ", test_data_re['settings'])
. Это приведет к:
xml_str back to dict : {'value1': 1, 'parent_lvl1': {'parent_Lvl2': {'value1': 2, 'value2': 3}}}
Кстати, хорошее месточтобы найти xmltodict
пример использования xmltodict
тесты , проверьте.