Разобрать XML в файл с массивом

CTRL + TAB открывает диалог Switcher. Затем вы можете использовать повторяющиеся CTRL + TAB для перехода к нужному окну или нажать соответствующий номер.

0
задан trotta 21 February 2019 в 13:16
поделиться

2 ответа

Попробуйте этот код.

import xml.etree.ElementTree as Et

file = Et.parse('some.xml')

tags = file.findall('tag')
for tag in tags:
temp1 = []
beginTime = tag.get('beginTime')
temp1.append(beginTime)
endTime = tag.get('endTime')
temp1.append(endTime)
eventId = tag.find('EventId').text
temp1.append(eventId)
items = tag.findall('item')

for item in items:
    temp2 = []
    color = item.get('color')
    temp2.append(color)
    name = item.find('name').text
    temp2.append(name)
    count = item.find('count').text
    temp2.count(count)
    infos = item.find('subtag').findall('Info')

    temp3 = []
    for info in infos:
        name = info.get('name')
        value = info.text
        temp3.append(name)
        temp3.append(value)
    temp3 = [';'.join(temp3)]
    result = temp1 + temp2 + temp3
    result = '|'.join(result)
    print(result)
0
ответ дан bumblebee 21 February 2019 в 13:16
поделиться

Еще один способ сделать это - преобразовать XML в json:

import xmltodict

with open('file.xml') as f:
    d = xmltodict.parse(f.read())['fruits']['tag']

for i in d['item']:
    subtag = []
    for s in i['subtag']['Info']:
        subtag.append('{};{}'.format(s['@name'], s['#text']))
    print('{}|{}|{}|{}|{}|{}|{}|'.format(d['@beginTime'], d['@endTime'], d['EventId'], i['@color'], i['name'], i['count'], ';'.join(subtag)))

Вывод:

20181125020000|20181202020000|16778|red|apple|1|Eid;396;New;397|
20181125020000|20181202020000|16778|yellow|banana|2|Eid;500;New;650;Col;999|
0
ответ дан Alderven 21 February 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: