我正在处理相当动态的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',"")