使用python3解析XML子元素

Use python 3 to parse XML child element

我有一个 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 属性(即 {'name': 'id', 'type': 'String', 'cardinality': 'One'}) 使用下面的:

from xml.etree import ElementTree as ET
tree = ET.parse(xmlFile)
root = tree.getroot()

for child in root.iter('fieldDefinition'):
    print(child.attrib)

我还需要returnname标签数据(即TRACK_IDfieldDefinitionTag 如果它存在,但不知道如何去做。

感谢任何帮助。

您可以使用

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的属性。