解析为XML命名空间属性与元素树
问题描述:
使用下面的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”是名称空间,但我该如何解析该名称空间?
答
下面应该工作:
>>> for elem in tree.iterfind('{http://schemas.dmtf.org/ovf/envelope/1}File'):
... print elem.tag, elem.attrib, elem.text
>>>
(无耻插头:如果你想使用Python OVFs工作,看看COT ...)