0

使用以下 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 ”是名称空间,但我如何在该名称空间内进行解析?

4

1 回答 1

0

以下应该有效:

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

(无耻的插件:如果您想在 Python 中使用 OVF,请查看COT ...)

于 2016-11-10T19:19:19.877 回答