Анализ атрибута в пространстве имен 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'}

Но если я попытаюсь разобрать файл тега, он его не найдет:

>>> for elem in tree.iterfind('File'):
...   print elem.tag, elem.attrib, elem.text
>>> 

Я понимаю, что "http://schemas.dmtf.org/ovf/envelope/1" - это пространство имен, но как мне выполнить синтаксический анализ в этом пространстве имен?


person testuser    schedule 09.11.2016    source источник


Ответы (1)


Следующее должно работать:

>>> for elem in tree.iterfind('{http://schemas.dmtf.org/ovf/envelope/1}File'):
...   print elem.tag, elem.attrib, elem.text
>>> 

(бессовестный плагин: если вы хотите работать с OVF в Python, взгляните на COT...)

person Glenn    schedule 10.11.2016