У меня есть файл XML, как показано ниже:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<geoEventDefinition guid = "3ab37e92-825c-4fdf-afa6-7b7536999ccd">
<fieldDefinitions>
<fieldDefinition name = "id" type = "String" cardinality = "One">
<fieldDefinitionTag>
<name>TRACK_ID</name>
</fieldDefinitionTag>
<fieldDefinitions/>
</fieldDefinition>
<fieldDefinition name = "position" type = "Group" cardinality = "One">
<fieldDefinitions>
<fieldDefinition name = "longitude" type = "Double" cardinality = "One">
<fieldDefinitions/>
</fieldDefinition>
<fieldDefinition name = "latitude" type = "Double" cardinality = "One">
<fieldDefinitions/>
</fieldDefinition>
</fieldDefinitions>
</fieldDefinition>
</fieldDefinitions> </geoEventDefinition>
Я повторяю файл, чтобы получить атрибуты fieldDefinition (т.е. {'имя': 'идентификатор', 'тип': 'строка', 'количество элементов': 'один'}), используя следующее:
from xml.etree import ElementTree as ET
tree = ET.parse(xmlFile)
root = tree.getroot()
for child in root.iter('fieldDefinition'):
print(child.attrib)
Мне также нужно вернуть данные тега название (т. е. TRACK_ID) под полеDefinitionTag, если он существует, но не могу понять, как это сделать.
Любая помощь приветствуется.
Ты можешь использовать
import xml.etree.ElementTree as ET
tree = ET.parse('xmlFile')
root = tree.getroot()
for child in root.iter("fieldDefinition"):
print(child.attrib)
for n in child.iter("name"):
print(n.text)
Его вывод
{'cardinality': 'One', 'type': 'String', 'name': 'id'}
TRACK_ID
{'cardinality': 'One', 'type': 'Group', 'name': 'position'}
{'cardinality': 'One', 'type': 'Double', 'name': 'longitude'}
{'cardinality': 'One', 'type': 'Double', 'name': 'latitude'}
Таким образом, он выводит атрибуты всех fieldDefinition
s.