Получение атрибутов корневого узла (пространства имен) в Python - PullRequest
0 голосов
/ 05 июля 2019

Мне нужно извлечь пространство имен, которое находится в самом начале XML-файла.

Это выглядит примерно так.

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:a="CannotGetThisAttrib" xmlns:b="CannotGetThisAttrib">
<fileHeader c="CanGetThisAttrib/>>
<body></body>
<fooder/>
</root>

Я могу извлечь атрибуты под корневым узлом. Однако я не могу получить атрибуты корневого узла, как a, так и b, которые являются пространствами имен, необходимыми для разбора XML-файла.

tree = ET.parse("xmlfile.xml")
root = tree.getroot()
root.attrib => None
root[0].attrib["c"] => CanGetThisAttrib

Любой совет приветствуется.

1 Ответ

0 голосов
/ 05 июля 2019

Здесь (с использованием lxml)

from lxml import etree

data = '''<?xml version="1.0" encoding="UTF-8"?>
           <root xmlns:a="CannotGetThisAttrib" xmlns:b="CannotGetThisAttrib">
            <fileHeader c="CanGetThisAttrib"/>
            <body></body>
            <fooder/>
         </root>
    '''

data = data.encode('ascii')
tree = etree.fromstring(data)
for k,v in tree.nsmap.items():
    print('{} -> {}'.format(k,v))

output

a -> CannotGetThisAttrib
b -> CannotGetThisAttrib
...