Я хочу пройтись по моему дереву XML и извлечь все дочерние атрибуты из выбранного родителя. Это моя настройка синтаксического анализа:
import xml.etree.ElementTree as ET
file_name = 'myXML.xml'
tree = ET.parse(file_name)
root = tree.getroot()
Функция, которую я использую для l oop, но вам понадобится для l oop на слой поколений: по сути, каждый родительский цикл проходит через каждого потомка и возвращает .tag
, .text
, & .attrib
:
Есть ли способ циклического прохождения и сбора всех этих данных без знания количества слоев?
def data_dump(k, mD, st):
for na in mD.iter(k):
for a in na:
print(st + '> a:: ', a.tag., a.text, a.attrib)
for b in a:
print('|-->', ' b:: ', b.tag, b.text, b.attrib)
for c in b:
print('|---->', ' c:: ', c.tag, c.text, c.attrib)
for d in c:
print('|------>', ' d:: ', d.tag, d.text, d.attrib)
Эти мои тестовые случаи:
data_dump('Title', root, 'TITLE')
data_dump('Comment', root, 'COM')
data_dump('Steps', root, 'STEP')
data_dump('Transitions', root, 'TRANS')
data_dump('Branches', root, 'BRAN')
data_dump('Connections', root, 'CONN')
data_dump('Sequence', root, 'SEQ')