2016-11-09 106 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 ...)