def parse_children_using_function(parent, parse_function, tag=None):
    """
    Find and parse children using a specified function. 
    
    :param parent: The parent ``Element`` object. 
    :param parse_function: A function which accepts an ``Element`` and returns an object. 
    :param tag: The tag name of the specific type of child to parse, or None to parse all children.
    
    :returns: A list of objects.

    """
    children = []
    if tag == None:
        nodes = parent.getchildren()
    else:
        nodes = parent.findall(tag)
    for n in nodes:
        c = parse_function(n)
        if c != None:
            children.append(c)
    return children
