使用 ElementTree Python 提取不在 XML 文件中每个元素中的子元素

Extract sub-element that not in every element in XML file using ElementTree Python

我想从 XML 文件中提取数据。但问题是,我想要的子元素 (portid) 并不在每个元素中。当它在元素中循环时我收到错误,因为它没有 ('portid').

下面是我提取它的代码:

def get_portid_in_registerFile(self): 
        for element_registerFile in self.crif_parser.getroot().findall('registerFile'):
            portid = element_registerFile.find('portid')
            print (portid.tag , ':', portid.text)
        return portid.tag

输出为:

 portid : 0x3A portid : 0x3A portid : 0x4E portid : 0x4E portid : 0x4E
 portid : 0x4F portid : 0x4F portid : 0x4F

 line 32, in get_portid_in_registerFile
     print (portid.tag , ':', portid.text) AttributeError: 'NoneType' object has no attribute 'tag'

如上所示,元素有portid时显示portid。然后,当它在没有 ('portid') 的元素中循环时显示错误。并且不要继续循环。

请问我需要更改代码的哪一部分。

非常感谢!

尝试将 findall('registerFile') 更改为 findall('registerFile[portid]')

或者只是添加一个 try/except。