protected void SendValidationEventNoThrow(XmlSchemaException e, XmlSeverityType severity) { if (severity == XmlSeverityType.Error) { _errorCount++; } _eventHandler?.Invoke(null, new ValidationEventArgs(e, severity)); }
/// <summary> /// default validation handler /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void ValidationEventHandler(object sender, ValidationEventArgs e) { validationEventHandler?.Invoke(sender, e); switch (e.Severity) { case XmlSeverityType.Error: Console.WriteLine("Error: {0}", e.Message); break; case XmlSeverityType.Warning: Console.WriteLine("Warning {0}", e.Message); break; } }
public bool LoadWithValidation(string folder, ValidationEventHandler eventHandler) { if (SchemaPath == null) { return(false); } bool passSchemaValidation = true; XmlReaderSettings settings = new XmlReaderSettings() { IgnoreComments = true, ValidationType = ValidationType.Schema, }; settings.Schemas.Add(SchemaNameSpace, SchemaPath); settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; settings.ValidationEventHandler += (sender, e) => { passSchemaValidation = false; eventHandler?.Invoke(sender, e); }; var documents = new List <GrammarDocument>(); foreach (string path in Directory.EnumerateFiles(folder).Where(x => x.EndsWith(".xml"))) { var document = new XmlDocument(); using (XmlReader reader = XmlReader.Create(path, settings)) { document.Load(reader); } documents.Add(new GrammarDocument(path, document)); } if (passSchemaValidation) { _items = documents; } return(passSchemaValidation); }
public static bool Validate(Stream stream, ValidationEventHandler handler) { var schema = new XmlSchemaSet(); foreach (string path in Directory.EnumerateFiles(Path.Combine(Path.GetDirectoryName(typeof(Project).Assembly.Location)), $"{nameof(Traneleon)}.xsd", SearchOption.TopDirectoryOnly)) { schema.Add(XMLNS, path); } //if (handler == null) handler = delegate (object sender, ValidationEventArgs e) { }; bool isValid = true; var doc = XDocument.Load(stream, LoadOptions.SetLineInfo); doc.Validate(schema, (sender, e) => { handler?.Invoke(sender, e); isValid = false; }); stream.Position = 0; return(isValid); }