TypeError: list indices must be integers or slices, not str error appears во время парсинга xml файла

Я пытаюсь распарсить xml файл который получаю в локальной сети, но получаю следуйщую ошибку:

print(value2['@id'])
TypeError: list indices must be integers or slices, not str

Сам код выглядит так:

import requests
import xmltodict 

url = 'http://192.168.1.8:8060/query/apps'
text = requests.get(url).text
#content = """
#<?xml version="1.0" encoding="UTF-8"?>
#<apps>
#<app id="31012" type="menu" #version="2.0.53">Vudu Movie &amp; #TV Store</app>
#</apps>
#"""
text = text.split('\n')
text = text[1:]
text = ''.join(text)
data = xmltodict.parse(text)
data = dict(data)

for key1, value1 in data.items():
  for key2, value2 in value1.items():
    print(value2['@id'])
    print(value2['@type'])
    print(value2['#text'])

Буду благодарен за помощь! (Уже долго игрался с этим=( )


Ответы (1 шт):

Автор решения: Dmitry

После выяснения в комментариях структуры данных, получается что для вывода сущностей надо использовать следующий обход по данным

for key1, value1 in data.items():
    for key2, value2 in value1.items():
        if isinstance(value2, list):
            for item in value2:
                print(item['@id'])
                print(item['@type'])
                print(item['#text'])

То есть переменная value2 содержит список, в котором каждый член - упорядоченный словарь. Обратившись к члену списка, далее можно забирать значения по ключам

→ Ссылка