Найти - Пользователи
Полная версия: Парсинг xml ET
Начало » Python для новичков » Парсинг xml ET
1
Zverushko
Всем привет
Пытаюсь парсить вот такую вот 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 не находит.

где я ошибся?
FishHook
Zverushko
а вот findall не находит
И не должен
print root.find("response").findall("error")
Zverushko
спасибо
а почему find ищет response, но не ищет error сразу?
py.user.next
Zverushko
а почему find ищет response, но не ищет error сразу?
Если это чисто философский вопрос, то потому что документ может содержать миллион узлов. Поэтому не очень было бы хорошо иметь такой метод, который всё время будет висеть, просматривая все вложенные узлы при каждом вызове. Поэтому сделали метод для просмотра в одном выбранном узле и только среди дочерних.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB