def from_xml_node(xml_node):
        """constructs a CLI.Parameter from an xml node.
        :param xml_node:
        :type xml_node: xml.etree.ElementTree.Element
        :rtype: Executable.Parameter
        :return:
        """

        def gather_enum_values():
            l = []
            for element in xml_node.iterfind('element'):
                l.append(element.text)
            return l

        name = xml_node.findtext("name")
        type = xml_node.tag

        if type in ("label", "description"): return None

        default = xml_node.findtext("default")

        longflag = xml_node.findtext('longflag')

        if default:
            default = default.replace('"', '').replace("'", '')

        index = xml_node.findtext('index')

        label = xml_node.findtext('label') or name or longflag

        doc = xml_node.findtext('description')

        values = gather_enum_values()

        channel = xml_node.findtext('channel')

        file_ext = xml_node.attrib.get('fileExtensions', None)

        return Parameter(name, type, default, doc, channel, values=values, index=index, label=label,
                         longflag=longflag, file_ext=file_ext)
constructs a CLI.Parameter from an xml node.
        :param xml_node:
        :type xml_node: xml.etree.ElementTree.Element
        :rtype: Executable.Parameter
        :return: