Могу ли я автоматически получить пространства имен XML-файла?

#python #xml

#python #xml

Вопрос:

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

например, есть образец XML-файла :

 <Document xmlns:xsi = "sample" xmlns ="SampleNamespace">
  

есть ли какой-либо способ получить «SampleNameSpace» в переменной?

Как и для каждого файла, который я буду анализировать, я могу восстановить указанное пространство имен файла

Спасибо за вашу помощь

Комментарии:

1. Вы задали здесь несколько разных вопросов. Получение всех пространств имен, объявленных в документе, — это одно; получение пространства имен корневого элемента — другое. Обратите внимание, что «файл» не имеет пространства имен, если вы не имеете в виду пространство имен корневого элемента XML-документа, содержащегося в файле.

Ответ №1:

Вы можете получить оба пространства имен в вашем примере в список, к которому вы сможете получить доступ позже:

 samp = """
<Document xmlns:xsi = "sample" xmlns ="SampleNamespace">
something
</Document>
"""
from lxml import etree
doc = etree.XML(samp)
spaces = []
for i in doc.xpath('//*'):
    for v in i.nsmap.values():
       spaces.append(v)
spaces
  

Вывод:

 ['sample', 'SampleNamespace']