Как проверить наличие атрибутов и тегов в XML перед разбором?
Я разбираю XML файл через Element Tree в python и записываю содержимое в файл cpp.
Содержимое тегов для детей будет вариантом для разных тегов. Например, тег первого события имеет сторонний тег как дочерний, но второй тег события не имеет.
- > Как проверить, существует ли тег или нет до разбора?
- > У детей есть атрибут value в теге 1-го события, но не во втором. Как проверить, существует ли атрибут или нет, прежде чем принимать его значение.
- > В настоящее время мой код выдает ошибку для не существующего партийного тега и устанавливает значение атрибута "Нет" для второго дочернего тега.
<main>
<event>
<party>Big</party>
<children type="me" value="3"/>
</event>
<event>
<children type="me"/>
</event>
</main>
код:
import xml.etree.ElementTree as ET
tree = ET.parse('party.xml')
root = tree.getroot()
for event in root.findall('event'):
parties = event.find('party').text
children = event.get('value')
Я хочу проверить теги, а затем взять их значения.
Ответы
Ответ 1
Если тег не существует, .find()
действительно возвращает None
. Просто проверьте это значение:
for event in root.findall('event'):
party = event.find('party')
if party is None:
continue
parties = party.text
children = event.get('value')
Вы уже используете .get()
для события для проверки атрибута value
; он возвращает None
, если атрибут не существует.
Атрибуты хранятся в словаре .attrib
, поэтому вы можете использовать стандартные методы Python для проверки атрибута явно:
if 'value' in event.attrib:
# value attribute is present.