def parse_child_of_class(parent, child_class, optional=True):
    """
    Find and parse a single instance of the specified class.
    
    :param parent: The parent Element object.
    :param child_class: The class of the child.
    :param optional: If False, raise an exception if no node is found.
    
    :raises: An Exception if no node is found and ``optional`` is ``False``.
    
    :returns: An object of child_class, or ``None`` if no object is found and ``optional`` is ``True``.
    
    """
    node = parent.find(child_class.TAG_NAME)
    if node == None and not optional:
        raise Exception('Node {0} does not contain required child node {1}.'
            .format(parent.tag, child_class.TAG_NAME))
    return child_class.parse(node)
