def _deserialize_xml_any()

in alibabacloud_oss_v2/serde.py [0:0]


def _deserialize_xml_any(upper_obj: Model, elem: ET.Element, attr_types: List[str]) -> Any:
    # if elem is None or elem.text is None:
    # print(f'elem.tag={elem.tag}, elem.text={elem.text}, attr_types={attr_types}\n')
    if elem is None:
        return None

    attr_type = attr_types[0]

    if not attr_type.islower():
        obj = upper_obj._Model__create_depend_object( # pylint: disable=protected-access
            attr_type)  
        if obj is None:
            raise exceptions.DeserializationError(
                error=f'Can not create object with {attr_type} type')
        _deserialize_xml_model(elem, obj)
        return obj

    if elem.text is None:
        return None

    # basic type
    if attr_type in ('str', ''):
        return str(elem.text)

    if attr_type == 'bool':
        return deserialize_boolean(elem.text)

    if elem.text == '':
        return None

    if attr_type == 'int':
        return int(elem.text)
    if attr_type == 'float':
        return float(elem.text)
    if 'datetime' in attr_type:
        return _deserialize_datetime(elem.text, attr_types)

    raise exceptions.DeserializationError(error=f'Unsupport type {attr_type}')