3 votes

XML et Python : Obtenir les espaces de noms déclarés dans l'élément Root

Comment accéder aux multiples xmlns à l'élément Root d'un arbre XML ? Par exemple :

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

Je veux obtenir un dictionnaire similaire à celui-ci, ou au moins un format permettant d'obtenir plus facilement l'URI et la balise correspondante.

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

2voto

unutbu Points 222216

Je ne suis pas sûr de la façon dont cela peut être fait avec xml.etree mais avec lxml.etree vous pourriez faire ça :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X