O'Reilly logo

C# Cookbook by Jay Hilyard, Stephen Teilhet

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

17.4. Validating XML

Problem

You are accepting an XML document created by another source and you want to verify that it conforms to a specific schema. This schema may be in the form of an XSD or XDR schema; alternatively, you want the flexibility to use a DTD to validate the XML.

Solution

Use the XmlValidatingReader to validate XML documents against any descriptor document, such as an XSD (XML Schema), a DTD (Document Type Definition), or an XDR (Xml-Data Reduced):

public static void ValidateXML( ) { // create XSD schema collection with book.xsd XmlSchemaCollection schemaCollection = new XmlSchemaCollection( ); // wire up handler to get any validation errors schemaCollection.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack); // add book.xsd schemaCollection.Add(null, @"..\..\Book.xsd"); // make sure we added if(schemaCollection.Count > 0) { // open the book.xml file XmlTextReader reader = new XmlTextReader(@"..\..\Book.xml"); // set up the validating reader XmlValidatingReader validReader = new XmlValidatingReader(reader); // set the validation type and add the schema collection validReader.ValidationType = ValidationType.Schema; validReader.Schemas.Add(schemaCollection); // wire up for any validation errors from the validating // reader validReader.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack); // read all nodes and print out while (validReader.Read( )) { if(validReader.NodeType == XmlNodeType.Element) { Console.Write("<{0}", ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required