2010-08-07 2 views
3

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

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/"} 

ответ

2

Я не уверен, как это можно сделать с помощью 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/'} 
Смежные вопросы