查找xml标签:findall与全路径名

时间:2018-10-17 09:26:06

标签: xml python-3.x elementtree

此问题与使用一种方法相对于另一种方法(与之相关的更多信息,如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)。

1 个答案:

答案 0 :(得分:0)

对xpath查询的良好规范应该既灵活又给您最佳性能。使用findall可能会迫使解析器加载整个页面并将其解析到末尾(至少假设findall返回而不是产生结果-而这通常是您不应该依赖的细节)。

因此,以我个人的观点,使用find只是一种更好的工程实践。并不是说实践上通常会有很大的差异。