Я знаю, что будут некоторые крики ужаса и понижения моего ответа в качестве ответного удара, поскольку я использую модуль re для анализа строки XML, но учтите, что:
В большинстве случаев следующее решение не вызовет проблем
Я бы хотел, чтобы downvoters приводил примеры случаев, вызывающих проблемы с моим решением
Я не разбираю строку, принимая слово «разбирать» в смысле «получить дерево перед тем, как проанализировать дерево, чтобы найти то, что ищем»;Я анализирую это: я непосредственно нахожу желаемую часть текста там, где она
Я не претендую на то, что XML-строка всегда должна анализироваться с помощью re .Вероятно, в большинстве случаев строка XML должна быть проанализирована с помощью специального анализатора.Я только говорю, что в таких простых случаях, как этот, в которых возможен простой и быстрый анализ, проще использовать инструмент регулярных выражений, который, кстати, быстрее.
import re
xml_string = """<ListObjectsResponse xmlns='http://www.example.com/dir/'>
<Item>
<UniqueID>abcdefghijklmnopqrstuvwxyz0123456789</UniqueID>
</Item>
</ListObjectsResponse>"""
print xml_string
print '\n=================================\n'
print re.search('<UniqueID>(.+?)</UniqueID>', xml_string, re.DOTALL).group(1)
result
<ListObjectsResponse xmlns='http://www.example.com/dir/'>
<Item>
<UniqueID>abcdefghijklmnopqrstuvwxyz0123456789</UniqueID>
</Item>
</ListObjectsResponse>
=================================
abcdefghijklmnopqrstuvwxyz0123456789