Найдите тег xml и пропустите, если он не существует в python 2.7 и ElementTree - PullRequest
0 голосов
/ 27 октября 2018

У меня есть XML-файл, похожий на приведенный ниже.Я хочу найти конкретный тег, который может существовать или не существовать.Теперь, когда я пытаюсь

tree.find('./Altitude).text = '1000ft'

Чтобы изменить значение высоты и мой тег не существует, я получаю сообщение об ошибке

'NoneType' object has no attribute 'text'

Если его нет, ноя хочу, чтобы моя программа пропустила тег, если он не существует.

<?xml version="1.0"?>
<data>
    <country name="Liechtenstein">
        <rank>1</rank>
        <year>2008</year>
        <gdppc>141100</gdppc>
        <neighbor name="Austria" direction="E"/>
        <neighbor name="Switzerland" direction="W"/>
    </country>
    <country name="Singapore">
        <rank>4</rank>
        <year>2011</year>
        <gdppc>59900</gdppc>
        <neighbor name="Malaysia" direction="N"/>
    </country>
    <country name="Panama">
        <year>2011</year>
        <gdppc>13600</gdppc>
        <neighbor name="Costa Rica" direction="W"/>
        <neighbor name="Colombia" direction="E"/>
    </country>
</data>

В основном я пытаюсь сделать следующее.1. Найдите файл XML для определенного тега. 2. Если есть атрибуты, найдите атрибут, который нам нужно изменить, и измените его значение.

1 Ответ

0 голосов
/ 03 ноября 2018

Я перестал использовать метод find (). Вместо этого я перебираю все дерево и проверяю тег, который хочу найти, затем проверяю его по словарю, который я создал.

for child in root.iter():
     for key, val customDict.items():
         if child.tag == key:
               do something

Возможно, это не лучший способ сделать это, но это работает.

...