#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']