使用 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。
我想从 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。