Анализ атрибута в пространстве имен xml с деревом элементов
Используя следующий XML-файл, который является vmware OVF:
<File ovf:href="foo.vmdk"/>
Мне нужно изменить foo.vmdk на bar.vmdk
Я использовал элементное дерево для разбора файла, и он показал мне пространство имен для каждого элемента
>>> for elem in tree.iter():
.... print elem.tag, elem.attrib, elem.text
{http://schemas.dmtf.org/ovf/envelope/1}File {'{http://schemas.dmtf.org/ovf/envelope/1}href': 'foo.vmdk'}
Но если я пытаюсь разобрать тег File, он не находит его:
>>> for elem in tree.iterfind('File'):
... print elem.tag, elem.attrib, elem.text
>>>
Я понимаю, что " http://schemas.dmtf.org/ovf/envelope/1" - это пространство имен, но как мне разобраться в этом пространстве имен?
1 ответ
Следующее должно работать:
>>> for elem in tree.iterfind('{http://schemas.dmtf.org/ovf/envelope/1}File'):
... print elem.tag, elem.attrib, elem.text
>>>
(бесстыдный плагин: если вы хотите работать с OVF в Python, взгляните на COT...)