Validating a XML against XSD schema in C#
Inputs:
xmlFileName: Input XML file name
schemaFileName: Input XSD file name
Output:
results: Results output
using System.Xml; using System.Xml.Schema; using System.IO; static List<string> results = new List<string>(); static void Validate(string xmlFileName, string schemaFileName) { XmlDocument x = new XmlDocument(); string source = xmlFileName; x.Load(source); XmlReaderSettings settings = new XmlReaderSettings(); settings.CloseInput = true; settings.ValidationEventHandler += Handler; settings.ValidationType = ValidationType.Schema; settings.Schemas.Add(null, schemaFileName); settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings | XmlSchemaValidationFlags.ProcessIdentityConstraints | XmlSchemaValidationFlags.ProcessInlineSchema | XmlSchemaValidationFlags.ProcessSchemaLocation; StringReader r; using (StreamReader sr = new StreamReader(source)) { r = new StringReader(sr.ReadToEnd()); } using (XmlReader validatingReader = XmlReader.Create(r, settings)) { while (validatingReader.Read()) { /* just loop through document */ } } } private static void Handler(object sender, ValidationEventArgs e) { if (e.Severity == XmlSeverityType.Error || e.Severity == XmlSeverityType.Warning) results.Add(String.Format("Line: {0}, Position: {1} "{2}"", e.Exception.LineNumber, e.Exception.LinePosition, e.Exception.Message)); }
Leave a Reply