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}", ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.