清理ElementTree处理-“ NoneType”对象没有属性“ attrib”

时间:2018-10-16 15:25:38

标签: python formatting standards elementtree

我正在处理相当动态的XML传入流。我正在阅读XML,将找到的值添加到词典列表中,然后使用execute many将词典添加到数据库中。

传入的XML可能并不总是包含将要发送到DB的值。今天,我使用了大量的try / except。我还研究了将<.find>值分配给一个变量,然后在添加到字典时检查该变量是否为非null。

这两种解决方案看起来都很难看,感觉就像沉重的样板代码。有更好的做法/标准吗?

下面是一些我正在考虑的想法:

用于处理元素为空或属性缺失的函数:

def lookup(elm, path_to_elm, attrib_name):
    return_value = elm.find(path_to_elm)
    if return_value is not None:
        return return_value.attrib.get(attrib_name, ("No Attribute: ", attrib_name))
    else:
        return_value = ("No Element", path_to_elm, " in Element ", elm)
        return return_value

还在看短路:

print root.find('./path/to/elm') or ElmTree.Element('')).attrib.get('Desired_Attribute',"")

0 个答案:

没有答案