Вы увидите print(soup)
, что имена тегов были преобразованы в нижний регистр парсером.Поэтому используйте строчные буквы при поиске имен тегов:
for ecuc_container in soup.findAll('ECUC-CONTAINER-VALUE'.lower()):
или просто:
for ecuc_container in soup.findAll('ecuc-container-value'):
Или даже лучше: явно проанализируйте документ как XML, чтобы регистр тегов не изменялся:
soup = Soup(handler,'xml')
Вот как вы можете получить список текста внутри <DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
элементов:
def parseArxml():
handler = open('input.arxml').read()
soup = Soup(handler,'xml')
dest = [d.text for d in soup.findAll('DEFINITION-REF') if d['DEST']=='ECUC-CHOICE-REFERENCE-DEF']
print(dest)
Вывод:
['/AUTOSAR/ecucdef/BswM/BswMConfig/BswMArbitration/BswMLogicalExpression/BswMArgumentRef',
'/AUTOSAR/ecucdef/BswM/BswMConfig/BswMArbitration/BswMLogicalExpression/BswMArgumentRef']
Или, если хотитечтобы получить все теги definition-ref
независимо от атрибута, используйте
dest = [d.text for d in soup.findAll('definition-ref')]