public void Convert()
        {
            if (string.IsNullOrEmpty(inputDirectory))
            {
                Log("No input directory has been specified!");
                return;
            }

            if (!InitializeOutput())
            {
                ConversionComplete?.Invoke();
                return;
            }

            try
            {
                string[] xmlFiles = Directory.GetFiles(inputDirectory, "*.xml");

                if (xmlFiles.Length == 0)
                {
                    Log("No XML files found in input directory.");
                }

                foreach (var xmlFile in xmlFiles)
                {
                    FileInfo    fileInfo = new FileInfo(xmlFile);
                    XmlDocument xmlDoc   = null;

                    Log("---------------------------------------------\r\nReading XML file: " + fileInfo.Name);

                    try
                    {
                        xmlDoc = new XmlDocument();
                        xmlDoc.Load(xmlFile);
                    }
                    catch (Exception ex)
                    {
                        Log(String.Format("The file {0} is not properly formatted and can't be parsed: {1}", fileInfo.Name, ex.Message));
                        continue;
                    }

                    XmlNamespaceManager nsManager = new XmlNamespaceManager(xmlDoc.NameTable);

                    foreach (var configNamespace in config.Namespace)
                    {
                        nsManager.AddNamespace(configNamespace.Prefix, configNamespace.Uri);
                    }

                    try
                    {
                        ProcessFile(xmlDoc, nsManager, fileInfo);
                        Log(string.Format("Done parsing/processing file {0}", fileInfo.Name));
                    }
                    catch (Exception ex)
                    {
                        Log(String.Format("Failed to process file {0} data due to: {1}", fileInfo.Name, ex.Message));
                        continue;
                    }

                    try
                    {
                        // Always run Validate(). If not configured with validation schema and/or schematron, it will just return "valid"
                        bool isSchemaValid     = validator.ValidateSchema(xmlFile);
                        bool isSchematronValid = validator.ValidateSchematron(xmlFile);

                        if (validator.WillValidate)
                        {
                            Log("Validation results:");

                            if (validator.WillValidateSchema)
                            {
                                Log(string.Format("Schema (XSD): {0}", isSchemaValid ? "valid" : "not valid"));
                            }
                            else
                            {
                                Log("Schema (XSD): n/a");
                            }

                            if (validator.WillValidateSchematron)
                            {
                                Log(string.Format("Schematron (SCH): {0}", isSchematronValid ? "valid" : "not valid"));
                            }
                            else
                            {
                                Log("Schematron (SCH): n/a");
                            }
                        }

                        if (!String.IsNullOrEmpty(moveDirectory))
                        {
                            DirectoryInfo di = new DirectoryInfo(moveDirectory);

                            if (!di.Exists)
                            {
                                di.Create();
                            }

                            string destinationFilePath = Path.Combine(moveDirectory, fileInfo.Name);

                            // If configured to validate, move the file to a subdirectory "valid" or "invalid" depending on the validation results
                            if (validator.WillValidate)
                            {
                                destinationFilePath = Path.Combine(destinationFilePath, isSchemaValid ? "valid" : "invalid");
                            }

                            fileInfo.MoveTo(destinationFilePath);

                            Console.WriteLine("Moved file to " + destinationFilePath);
                        }
                    }
                    catch (Exception ex)
                    {
                        Log(String.Format("Failed to validate and/or move file {0} data due to: {1}", fileInfo.Name, ex.Message));
                        continue;
                    }
                }
            }
            catch (Exception ex)
            {
                Log("Failed to process files data due to: " + ex.Message);
            }
            finally
            {
                FinalizeOutput();
                ConversionComplete?.Invoke();
            }
        }
 private static void OnConversionCompleted(ConversionEventArgs e)
 {
     ConversionComplete?.Invoke(e);
 }
 private void RaiseConversionComplete(IList <VectorXaml> convertedObjects)
 {
     ConversionComplete?.Invoke(this, new ConversionEventArgs(convertedObjects));
 }