'Loads the proper filter by the type attribute of elem'

@classmethod
def from_element(cls, elem):

    rval = ToolInputTranslator()
    for req_param in elem.findall('request_param'):
        remote_name = req_param.get('remote_name')
        galaxy_name = req_param.get('galaxy_name')
        missing = req_param.get('missing')
        value_trans = {}
        append_param = None
        value_trans_elem = req_param.find('value_translation')
        if (value_trans_elem is not None):
            for value_elem in value_trans_elem.findall('value'):
                remote_value = value_elem.get('remote_value')
                galaxy_value = value_elem.get('galaxy_value')
                if (None not in [remote_value, galaxy_value]):
                    value_trans[remote_value] = galaxy_value
        append_param_elem = req_param.find('append_param')
        if (append_param_elem is not None):
            separator = append_param_elem.get('separator', ',')
            first_separator = append_param_elem.get('first_separator', None)
            join_str = append_param_elem.get('join', '=')
            append_dict = {}
            for value_elem in append_param_elem.findall('value'):
                value_name = value_elem.get('name')
                value_missing = value_elem.get('missing')
                if (None not in [value_name, value_missing]):
                    append_dict[value_name] = value_missing
            append_param = Bunch(separator=separator, first_separator=first_separator, join_str=join_str, append_dict=append_dict)
        rval.param_trans_dict[remote_name] = Bunch(galaxy_name=galaxy_name, missing=missing, value_trans=value_trans, append_param=append_param)
    return rval
