Generates a new builder from the given xml data and then
        loads its information.
        
        :param      ydata | <xml.etree.ElementTree.Element>
        
        :return     <Builder> || None

def fromYaml(cls, ydata, filepath=''):
        """
        Generates a new builder from the given xml data and then
        loads its information.
        
        :param      ydata | <xml.etree.ElementTree.Element>
        
        :return     <Builder> || None
        """
        module = None
        pkg_data = ydata.get('package')
        if pkg_data is not None:
            path = pkg_data.get('path', '')
            name = pkg_data.get('name', '')

            if filepath:
                path = os.path.join(filepath, path)

            path = os.path.abspath(path)
            sys.path.insert(0, path)
            sys.modules.pop(name, None)

            try:
                __import__(name)
                module = sys.modules[name]
            except (ImportError, KeyError):
                return None
        else:
            return None

        # generate the builder
        builder = cls(module)
        builder.loadYaml(ydata, filepath=filepath)
        return builder