将XML转换为Python对象 - 多个IF语句

时间:2018-05-01 21:49:46

标签: python if-statement

我试图编写自己的逻辑来解析XML字符串并将其转换为Python对象。它需要我做一堆

attribute1 = xml_element.find('ATTRIBUTE1')
attribute2 = xml_element.find('ATTRIBUTE2')

然后是几个:

if attribute1 is not None:
    obj.attribute1 = attribute1.text
if attribute2 is not None:
    obj.attribute2 = attribute2.text

这些多个if语句(其中差不多50个)导致4D显示低测试覆盖率(显然我没有测试每个if语句)并且还说我的函数具有高认知复杂度。想知道在没有多个if语句的情况下是否有办法做到这一点? (第三方包不是一种选择)

1 个答案:

答案 0 :(得分:1)

您可以使用方法检查对象是否为None

@staticmethod
def assign_attribute(attribute):
    if attribute is not None:
        return attribute.text
    return None

然后只需调用它并分配文本,如果属性为null,则分配无:

obj.attribute1 = assign_attribute(attribute1)
obj.attribute2 = assign_attribute(attribute2)

现在你只有一个"如果"言。

修改

此代码假定您是第一次从XML创建和初始化对象,如果obj.attribute1已包含值,然后您使用assign_attribute方法且属性为{{1} },原始值将被清除。

如果你想保留现有的值,那么方法可能是这样的:

None