public static RunSettingsContainer LoadFromXml()

in GoogleTestAdapter/TestAdapter/Settings/RunSettingsContainer.cs [72:118]


        public static RunSettingsContainer LoadFromXml(XPathNavigator rootElement)
        {
            ValidateArg.NotNull(rootElement, nameof(rootElement));

            RunSettingsContainer runSettingsContainer = null;
            if (rootElement.Name.Equals(GoogleTestConstants.SettingsName))
            {
                var schemaSet = new XmlSchemaSet();
                var schemaStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("GoogleTestAdapterSettings.xsd");
                var schemaSettings = new XmlReaderSettings(); // Don't use an object initializer for FxCop to understand.
                schemaSettings.XmlResolver = null;
                schemaSet.Add(null, XmlReader.Create(schemaStream, schemaSettings));

                var settings = new XmlReaderSettings(); // Don't use an object initializer for FxCop to understand.
                settings.Schemas = schemaSet;
                settings.ValidationType = ValidationType.Schema;
                settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings;
                settings.XmlResolver = null;
                settings.ValidationEventHandler += (object o, ValidationEventArgs e) => throw e.Exception;
                var reader = XmlReader.Create(new MemoryStream(Encoding.UTF8.GetBytes(rootElement.OuterXml)), settings);

                try
                {
                    var serializer = new XmlSerializer(typeof(SettingsSerializationContainer));
                    var serializationContainer = serializer.Deserialize(reader) as SettingsSerializationContainer;
                    runSettingsContainer = new RunSettingsContainer(serializationContainer);

                    ValidateAdditionalRunSettingsConstraints(runSettingsContainer.SolutionSettings);
                    foreach (var runSettings in runSettingsContainer.ProjectSettings)
                        ValidateAdditionalRunSettingsConstraints(runSettings);
                }
                catch (InvalidRunSettingsException)
                {
                    throw;
                }
                catch (InvalidOperationException e) when (e.InnerException is XmlSchemaValidationException)
                {
                    throw new InvalidRunSettingsException(String.Format(Resources.Invalid, GoogleTestConstants.SettingsName), e.InnerException);
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.ToString());
                }
            }

            return runSettingsContainer ?? new RunSettingsContainer();
        }