Итерация при разборе xml
Разбираю (читаю, парсю) xml-файл, используя метод root.iter() в цикле for. Есть возможность в цикле по условию (if field.tag == 'inn') перейти к следующему тэгу?
В идеале мне нужно следующее: За тэгом inn может идти тэг account. И мне надо если тэг account есть, значение тэга inn выводить в файл. Если следующий тэг не account - не выводить.
Ответы (2 шт):
Автор решения: ProstoAndrey
→ Ссылка
Так как никто не отреагировал, решил вопрос сам и несколько иначе. В xml всегда последовательность тэгов такая - inn,account,orgName. Если account отсутствует - выводить в файл-отчёт inn и orgName
import xml.etree.ElementTree as ET, os
file = open("D:/Python/Files/test00.txt", "w")
inn = ''
for event, elem in ET.iterparse("D:/Python/Files/uslugi.xml"):
if elem.tag == 'inn':
inn = elem.text
if elem.tag == 'account':
inn = ''
if elem.tag != 'inn' and elem.tag != 'account' and inn != '':
if elem.tag == 'orgName':
file.write(inn + ' ' + elem.text + '\n')
inn = ''
file.close()
Автор решения: ProstoAndrey
→ Ссылка
Спасибо! На самом деле учитывая чёткую посл-ность тэгов код даже избыточен, достаточно так:
for event, elem in ET.iterparse("D:/Python/Files/uslugi.xml"):
if elem.tag == 'inn':
inn = elem.text
if elem.tag == 'account':
inn = ''
if elem.tag == 'orgName' and inn != '':
file.write(inn + ' ' + elem.text + '\n')
inn = ''
file.close()