Синтаксический анализ атрибута в пространстве имен xml с деревом элементов

Используя следующий XML-файл, который является vmware OVF:

<File ovf_href="foo.vmdk"/>

Мне нужно переодеться.vmdk в бар.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» это пространство имен, но как я могу анализировать в этом пространстве имен?

1 ответ

  1. Должно работать следующее:

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

    (shameless plug: если вы хотите работать с OVFs в Python, взгляните на COT …)