public static void getGUIConfigFromXml(InputStream is, GUIConfig config) {
    try {
      DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
      Document doc = docBuilder.parse(is);

      validateSchema(doc, Constants.CONFIG_SCHEMA_FILE_PATH);

      // normalize text representation
      doc.getDocumentElement().normalize();

      NodeList language = doc.getElementsByTagName("language").item(0).getChildNodes();
      for (int s = 0; s < language.getLength(); s++) {
        Node nodeAux = language.item(s);
        config.setLanguage(nodeAux.getTextContent().trim());
      }

      NodeList recentConfigFiles =
          doc.getElementsByTagName("recentConfigFiles").item(0).getChildNodes();

      for (int s = 0; s < recentConfigFiles.getLength(); s++) {
        Node nodeAux = recentConfigFiles.item(s);
        if (nodeAux.getNodeType() == Node.ELEMENT_NODE) {
          if (nodeAux.getNodeName().equals("configFile")) {
            config.addRecentConfigFile(nodeAux.getTextContent().trim());
          }
        }
      }

    } catch (SAXParseException err) {
      logger.error(
          "** Parsing error" + ", line " + err.getLineNumber() + ", uri " + err.getSystemId());
      logger.error(" " + err.getMessage());
      throw new ConfigException(err);

    } catch (SAXException e) {
      throw new ConfigException(e);
    } catch (Throwable t) {
      throw new ConfigException(t);
    }
  } // end of main