XML и Python: получите пространства имен, объявленные в корневом элементе

Как получить доступ к нескольким объявлениям xmlns в корневом элементе дерева XML? Например:

import xml.etree.cElementTree as ET
data = """<root
             xmlns:one="http://www.first.uri/here/"
             xmlns:two="http://www.second.uri/here/">

          ...all other child elements here...
          </root>"""

tree = ET.fromstring(data)
# I don't know what to do here afterwards

Я хочу получить словарь, похожий на этот, или хотя бы какой-то формат, чтобы упростить получение URI и соответствующего тега.

{'one':"http://www.first.uri/here/", 'two':"http://www.second.uri/here/"}

person Kit    schedule 07.08.2010    source источник


Ответы (1)


Я не уверен, как это можно сделать с помощью xml.etree, но с помощью lxml.etree вы можете сделать это:

import lxml.etree as le
data = """<root
             xmlns:one="http://www.first.uri/here/"
             xmlns:two="http://www.second.uri/here/">

          ...all other child elements here...
          </root>"""

tree = le.XML(data)
print(tree.nsmap)
# {'two': 'http://www.second.uri/here/', 'one': 'http://www.first.uri/here/'}
person unutbu    schedule 07.08.2010