parse .xml с префиксом на тегах? xml.etree.ElementTree

Я могу читать теги, кроме случаев, когда есть префикс. Мне не повезло найти SO для предыдущего вопроса.

Мне нужно читать media:content . Я попробовал image = node.find("media:content") . Вход Rss:

 <channel> <title>Popular Photography in the last 1 week</title> <item> <title>foo</title> <media:category label="Miscellaneous">photography/misc</media:category> <media:content url="http://foo.com/1.jpg" height="375" width="500" medium="image"/> </item> <item> ... </item> </channel> 

Я могу прочитать title тега sibling.

 from xml.etree import ElementTree with open('cache1.rss', 'rt') as f: tree = ElementTree.parse(f) for node in tree.findall('.//channel/item'): title = node.find("title").text 

Я использую документы, но застрял в части «префикс».

  • etree Clone Node
  • Обновление XML-элементов и значений атрибутов с использованием Python etree
  • Как вставить пространство имен и префиксы в строку XML с помощью Python?
  • получить всех родителей узла xml с помощью python
  • 2 Solutions collect form web for “parse .xml с префиксом на тегах? xml.etree.ElementTree”

    Ниже приведен пример использования пространств имен XML с ElementTree :

     >>> x = '''\ <channel xmlns:media="http://www.w3.org/TR/html4/"> <title>Popular Photography in the last 1 week</title> <item> <title>foo</title> <media:category label="Miscellaneous">photography/misc</media:category> <media:content url="http://foo.com/1.jpg" height="375" width="500" medium="image"/> </item> <item> ... </item> </channel> ''' >>> node = ElementTree.fromstring(x) >>> for elem in node.findall('item/{http://www.w3.org/TR/html4/}category'): print elem.text photography/misc 

    media – пространство имен XML, оно должно быть определено где-то раньше с помощью xmlns:media="..." . См. http://lxml.de/xpathxslt.html#namespaces-and-prefixes для определения пространств имен xml для использования в выражениях XPath в lxml.

    Python - лучший язык программирования в мире.