AspAlliance.com LogoASPAlliance: Articles, reviews, and samples for .NET Developers
URL:
http://aspalliance.com/articleViewer.aspx?aId=1143&pId=-1
CodeSnip: Validating XML Data using the XML Schema Definition
page
by Uday Denduluri
Feedback
Average Rating: 
Views (Total / Last 10 Days): 22085/ 14

Introduction

The following will help someone understand the validation of XML files against the XML schema definition (XSD). Let us assume that we have an XML file and XSD file. We need to validate this XML file before we perform operations on it. The code snippets shown below are in written in the C# language. Some of the classes used were introduced in .NET Framework 2.0.

Description

The code below explains the process of creating an XML Document from an XML file on the local system.

Listing 1

//Physical path of the XML File
string XmlFilePath = @"C:\NewXMLFile.xml";
//Physical path of the XSD File
string XSDFilePath = @"C:\NewXMLFile.xsd";
 
XmlDocument ObjXmlDocument = new XmlDocument();
try
{
ObjXmlDocument.Load(XmlFilePath);
}
 
catch (XmlException ObjXMLException)
{
MessageBox.Show("Not a Well Formed XML Document"+ ObjXMLException.Message);
}
return ObjXmlDocument;

As shown in Listing 1 an object of type XMLDocument is created and loaded with the XML file specified by the XmlFilePath variable. If it is not a valid XML file, the XML exception is raised. A validation message is shown to the user stating that the XML file given is not a valid XML file. Once we know that the XML is a valid document we need to validate it against the XML schema.

The code below explains loading the XSD file and creating a validation event handler for it.

Listing 2

// Load the schema definition
XmlReaderSettings ObjXMLSettings = new XmlReaderSettings ();
ObjXMLSettings.ValidationType = ValidationType.Schema;
ObjXMLSettings.ValidationEventHandler +=
new System.Xml.Schema.ValidationEventHandler (ObjXMLSettings_ValidationEventHandler);
ObjXMLSettings.Schemas.Add (null, XmlReader.Create (XSDFilePath));

XMLReaderSettings - This class is new in the .NET Framework version 2.0. This class specifies a set of features to support the XmlReader object created by the Create method. As shown in Listing 2, we instantiate the class and set the validation type. We also add a validation event handler. The next listing will describe more about the event handler.

The code below explains the validation event handler that will be fired if the XML document does not match the XSD file.

Listing 3

private void ObjXMLSettings_ValidationEventHandler(object sender, ValidationEventArgs args)
{
if (args.Severity == XmlSeverityType.Error)
{
ErrorMessage.Append(args.Message);
}
}

The code shown below is the actual statement that fires the validation part.

Listing 4

XmlNodeReader ObjXmlNodeReader = new XmlNodeReader(ObjXmlDocument);
ObjXMLReader = XmlReader.Create (ObjXmlNodeReader, ObjXMLSettings);
// If there XML file does not match the XSD file 
//then Validation event handler is fired in this statement
while (ObjXMLReader.Read ())
{ 
}
if(!String.IsNullOrEmpty(ErrorMessage.ToString()))
{
 MessageBox.Show(ErrorMessage.ToString());
}

As shown in the Listing 4 the object of XMLReader’s method Read is fired. The error message which is populated by validation errors is shown to the user if there are any.

References
Conclusion

Let us conclude the topic by summarizing all the operations.

1.    Create an XMLDocument object and load the XML file.

2.    Create an XMLNodeReader object and input the object of the XMLDocument.

3.    Create an XMLSettings object and do the following 2 operations:

·         Load the schema object.

·         Add the validation event handler.

4.    Read the XmlDocument using the XmlReader.



©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-04-18 7:14:48 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search