Извлечь подэлемент, который находится не в каждом элементе XML файла, используя ElementTree Python - PullRequest
0 голосов
/ 18 марта 2020

Я хотел бы извлечь данные из файла XML. Но проблема в том, что подэлемент, который я хочу (portid), не в каждом элементе. Когда он l oop в элементе I получил ошибку, потому что у него нет ('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. Затем он показывает ошибку, когда l oop в элементе, который не имеет ('portid'). И не продолжайте цикл.

Могу ли я узнать, какую часть кода мне нужно изменить.

Большое спасибо заранее!

1 Ответ

0 голосов
/ 24 марта 2020

Попробуйте изменить findall('registerFile') на findall('registerFile[portid]').

Или, может быть, просто добавьте попытку / исключая.

...