使用元素树解析xml命名空间中的属性

时间:2016-11-09 16:16:14

标签: xml namespaces elementtree ovf

使用以下XML文件,即vmware OVF:

<File ovf:href="foo.vmdk"/>

我需要将foo.vmdk更改为bar.vmdk

我使用Element树来解析文件,输出显示了每个元素的命名空间

>>> 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 个答案:

答案 0 :(得分:0)

以下内容应该有效:

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

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