У меня есть XML-файл, структурированный следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<TEI>
A
<placeName xml:id="ene.0" n="0" key="geonames 644285" ref="http://www.geonames.org/644285">Pralognan</placeName>
suivre
<placeName xml:id="ene.3" n="2" subtype="compound" key="osm 2272301" ref="http://www.openstreetmap.org/way/2272301">
la route entre
<placeName xml:id="ene.1" n="1" key="osm 178528565" ref="http://www.openstreetmap.org/node/178528565">
l'hôtel de la
<placeName n="0">Vanoise</placeName>
</placeName>
et celui du
<placeName xml:id="ene.2" n="0" key="osm 3379120" ref="http://www.openstreetmap.org/way/3379120">Petit Mont Blanc</placeName>
</placeName>
</TEI>
и код Python для его анализа:
import xml.etree.cElementTree as ET
parse_file = open("file.xml","r")
tree_parse_file = ET.parse(parse_file)
root_parse_file = tree_parse_file.getroot()
for child in root_parse_file: # Child pointing on all sub child of root
if "ref" in child.attrib.keys():
#some code...
for subChild in child: # To point on all of subChild of Child elements, this is line 59 of my code
print(subChild.attrib['ref'])
#some code...
Когда я хочу выполнить итерации по этому элементу
<placeName xml:id="ene.3" ...>
чтобы получить все вложенные элементы и проанализировать их атрибуты, я получаю следующую ошибку в этой строке: print(subChild.attrib['ref'])
error:
Traceback (most recent call last):
File "./generate_long_lat2.py", line 59, in <module>
print(subChild.attrib['ref'])
KeyError: 'ref'
и атрибут ref
существует в дочернем элементе элемента
<placeName xml:id="ene.1" ...>
Мой вопрос: как я могу перебрать все вложенные дочерние элементы корневого элемента?