此问题与使用一种方法相对于另一种方法(与之相关的更多信息,如pythonic,更鲁棒的信息等)更为相关。假设我要搜索特定的标签和相应的文本,当前我使用findall
然后使用标签名称进行搜索,如下
root = ET.parse(xml_file).getroot()
xmlns = {'opt' : 'http://asite.com/opt',
're' : 'http://anothersite.com'}
angle = float(root.findall('.//opt:Angle', xmlns)[0].text)
除了使用findall
构造函数外,我还可以指定该特定标记的路径,但是通常建议一种方法优于另一种方法吗?
这种查找方法仍然依赖于该元素是第一个元素的事实。我还希望findall
可以/可以更灵活,并且可以指定完整的路径名。我还担心XML结构是否发生变化(在这种情况下,当然会先尝试try / excepts)。
答案 0 :(得分:0)
对xpath查询的良好规范应该既灵活又给您最佳性能。使用findall
可能会迫使解析器加载整个页面并将其解析到末尾(至少假设findall
返回而不是产生结果-而这通常是您不应该依赖的细节)。
因此,以我个人的观点,使用find
只是一种更好的工程实践。并不是说实践上通常会有很大的差异。