Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 15, 2016 12:00:52

Zverushko
Зарегистрирован: 2013-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг xml ET

Всем привет
Пытаюсь парсить вот такую вот xml:

<?xml version="1.0" encoding="utf-8"?>
<yandexsearch version="1.0">
  <request>
    <query>
    </query>
    <page>
      0
    </page>
    <sortby order="ascending" priority="no">
      tm
    </sortby>
    <maxpassages>
    </maxpassages>
    <groupings>
      <groupby attr="" mode="flat" groups-on-page="10" docs-in-group="1" curcateg="-1" />
    </groupings>
  </request>
  <response date="20160115T093915">
    <error code="2">
      Задан пустой поисковый запрос
    </error>
  </response>
</yandexsearch>

на предмет ошибки (поле error и его значение - задан пустой поисковой запрос)

root = et.fromstring(xml)
root.findall('error') // []

не пойму, почему не работает

через root.iter('error') я получаю итерируемый объект с этим полем, а вот findall не находит.

где я ошибся?

Офлайн

#2 Янв. 15, 2016 12:20:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Парсинг xml ET

Zverushko
а вот findall не находит
И не должен
print root.find("response").findall("error")



Офлайн

#3 Янв. 15, 2016 12:40:00

Zverushko
Зарегистрирован: 2013-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг xml ET

спасибо
а почему find ищет response, но не ищет error сразу?

Офлайн

#4 Янв. 15, 2016 13:54:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Парсинг xml ET

Zverushko
а почему find ищет response, но не ищет error сразу?
Если это чисто философский вопрос, то потому что документ может содержать миллион узлов. Поэтому не очень было бы хорошо иметь такой метод, который всё время будет висеть, просматривая все вложенные узлы при каждом вызове. Поэтому сделали метод для просмотра в одном выбранном узле и только среди дочерних.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version