Mega Code Archive

 
Categories / C# / XML LINQ
 

Validating an XML Document

using System; using System.Linq; using System.Collections; using System.Collections.Generic; using System.Xml; using System.Xml.Schema; using System.Xml.Linq; public class MainClass {     public static void Main() {         XDocument xDocument = new XDocument(           new XElement("Books",             new XElement("Book",               new XAttribute("type", "Author"),               new XElement("FirstName", "A"),               new XElement("MiddleName", "Carson"),               new XElement("LastName", "B")),             new XElement("Book",               new XAttribute("type", "Author"),               new XElement("FirstName", "C"),               new XElement("LastName", "D"))));         Console.WriteLine(xDocument);         XmlSchemaSet schemaSet = new XmlSchemaSet();         schemaSet.Add(null, "bookparticipants.xsd");         xDocument.Validate(schemaSet, (o, vea) => {                Console.WriteLine(o.GetType().Name);                Console.WriteLine(vea.Message);            },true);         foreach (XElement element in xDocument.Descendants()) {             Console.WriteLine("Element {0} is {1}", element.Name,               element.GetSchemaInfo().Validity);             XmlSchemaElement se = element.GetSchemaInfo().SchemaElement;             if (se != null) {                 Console.WriteLine(                   "Schema element {0} must have MinOccurs = {1} and MaxOccurs = {2}{3}",                   se.Name, se.MinOccurs, se.MaxOccurs, System.Environment.NewLine);             } else {                 Console.WriteLine();             }         }     } }