ElementTree对名称空间不太聪明。你需要给的.find(),findall()和iterfind()方法的明确的命名空间字典。这没有很好的记录:
namespaces = {'owl': 'http://www.w3.org/2002/07/owl#'} # add more as neededroot.findall('owl:Class', namespaces)前缀仅在
namespaces你传入的参数中查找。这意味着你可以使用任何喜欢的名称空间前缀;API会分开owl:一部分,在
namespaces字典中查找相应的名称空间URL ,然后更改搜索以查找XPath表达式
{http://www.w3.org/2002/07/owl}Class。当然,你也可以自己使用相同的语法:root.findall('{http://www.w3.org/2002/07/owl#}Class')如果可以切换到lxml库,那就更好了;该库支持相同的
ElementTree API,但会在
.nsmap元素的属性中为你收集名称空间。



