-1
Я использую ixml для анализа XML-doxument.Как решить проблему StopIteration, в то время как тег XML не имеет значения, используя скрипт Python
from lxml import etree
root=etree.XML(full xml tag file content)
if (next(root.iterfind(".//one_inner_tag")).text is None):
Print "NONE VALUE"
else:
Print root.iterfind(".//one_inner_tag")).text
При выполнении этого кода, я столкнулся ошибку как
if (next(root.iterfind(".//one_inner_tag")).text is None):
StopIteration
Из содержимого файла не имеет такой специфический признак. Если тег не имеет значения, значит, мне нужно напечатать NONE VALUE. Но он печатает ошибку.
Вы можете проверить длину из итерации вернулась из iterfind, вместо вызова следующего и comapring в None – M4rtini
Это код расточительный - вы делаете 'iterfind' дважды: один раз, чтобы определить, существует ли элемент, а затем еще раз, чтобы извлечь текст. –
@CorleyBrigman: Это действительно сломан, а не просто расточительно. Никакой итерации не было сделано во втором использовании, поэтому он пытается получить '.text' на самом генераторе, что не сработает. Кроме того, у него есть неправильная капитализация печати (и если это Py3 или Py2 с импортом '__future__'' print_function', ему нужны parens вокруг аргументов для 'print' для загрузки). – ShadowRanger