CSharp - XML Validation with XML Schema

Posted on January 30th, 2006 by gernot.
Categories: CSharp.
Tags: , , , , ,

This is a short tutorial how one can validate a XML Document against a XML schema by using C# and the .NET framework.

C# Class

using System.Xml;
using System.Xml.Schema;

namespace XMLValidation
{
class XMLValidatorTest
{

private bool XMLisValid = true;

public void ReadValidateXMLFile()
{
   XmlTextReader reader = new XmlTextReader(“C:\\test.xml”);
   XmlValidatingReader validator = new XmlValidatingReader(reader);
   validator.ValidationType = ValidationType.Schema;
   validator.ValidationEventHandler +=
      new ValidationEventHandler(this.XMLValidationEventHandler);

   while (validator.Read())
   {
      //Add code here to process XML content
   }
   validator.Close();

   //Check if XML document is valid or not
   if (this.XMLisValid)
      Console.WriteLine(“XML Document is valid”);
   else
      Console.WriteLine(“XML Document is invalid”);
   }
}

public static void XMLValidationEventHandler(
  object sender,ValidationEventArgs args)
{
   this.XMLisValid = false;
   Console.WriteLine(“XML Validation event” + args.Message);
}

}
}

XML Root Node - XSD Reference

In the XML File:

‹?xml version=”1.0″ encoding=”utf-8″ ?›
‹testNS:testRoot
  xmlns:testNS=”http://www.gego.info/testxmlns”
  xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
  xsi:schemaLocation=”http://www.gego.info/testxmlns test.xsd”

In the XSD File:

‹?xml version=”1.0″ encoding=”utf-8″ ?›
‹xs:schema
  id=”test”
  targetNamespace=”http://www.gego.info/testxmlns”
  elementFormDefault=”qualified”
  attributeFormDefault=”unqualified”
  xmlns=”http://www.gego.info/testxmlns”
  xmlns:xs=”http://www.w3.org/2001/XMLSchema”

0 comments.

Leave a comment

Comments can contain some xhtml. Names and emails are required (emails aren't displayed), url's are optional.