Вопрос:
Я могу получить element.tag
имя без пространства имен, используя lxml.etree.QName(element).localname
.
Как сделать аналог с element.attrib
?
Пример:
Предполагается, что этот XML-файл:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root xmlns="some_ns" xmlns:soc="some_other_ns" >
<someTag attr1="something" soc:attr2="something else"></someTag>
</root>
Этот скрипт возвращает attrib
с пространством имен для второго атрибута:
from lxml import etree
root = etree.parse('test.xml').getroot()
ns = { 'n':'some_ns', 'son':'some_other_ns' }
print ([e.attrib for e in root.xpath('./n:someTag', namespaces = ns)])
Выход:
[{'{some_other_ns}attr2': 'something else', 'attr1': 'something'}]