Вы можете использовать XPath :
for x in target.xpath('/root/targetroot/targetcontainer/target'):
print x.text
Мы просим все элементы, которые соответствуют path .В этом случае путь равен /root/targetroot/targetcontainer/target
, что означает
всех элементов <target>
, которые находятся внутри элемента <targetcontainer>
, внутри элемента <targetroot>
, внутри элемента <root>
,Кроме того, элемент <root>
должен быть корнем документа, поскольку ему предшествует /
, что означает начало документа.
Кроме того, в вашем XML-документе возникли две проблемы.Во-первых, объявление <?xml version="1.0"?>
должно быть самым первым в документе - и в этом примере ему предшествует символ новой строки и пробел.Кроме того, это не тег и его не следует закрывать, поэтому </xml>
в конце вашей строки следует удалить.В любом случае, я уже редактировал ваш вопрос.
EDIT : это решение еще можно улучшить.Вам не нужно проходить весь путь - вы можете просто спросить все элементы <target>
внутри документа.Для этого перед именем тега ставится две косые черты.Поскольку вы хотите все тексты <target>
, независимо от того, где они находятся, это может быть лучшим решением.Итак, цикл выше можно записать так:
for x in target.xpath('//target'):
print x.text
Сначала я попробовал, но это не сработало.Проблема, однако, заключалась в синтаксических проблемах в XML, а не в XPath, но я попробовал другой, более длинный путь и забыл повторить этот.Сожалею!В любом случае, я надеюсь, что все же расскажу о XPath:)