2016-11-09 92 views
0

使用下面的XML文件,这是VMware的OVF:解析为XML命名空间属性与元素树

<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”是名称空间,但我该如何解析该名称空间?

回答

0

下面应该工作:

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

(无耻插头:如果你想使用Python OVFs工作,看看COT ...)