Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

XmlDocument.Validate Method

Definition

Namespace:
System.Xml
Assemblies:
netstandard.dll, System.Xml.ReaderWriter.dll
Assembly:
System.Xml.ReaderWriter.dll
Assembly:
System.Xml.dll
Assembly:
netstandard.dll

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

Overloads

Name Description
Validate(ValidationEventHandler)

Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

Validate(ValidationEventHandler, XmlNode)

Validates the XmlNode object specified against the XML Schema Definition Language (XSD) schemas in the Schemas property.

Validate(ValidationEventHandler)

Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs

Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler);
public void Validate(System.Xml.Schema.ValidationEventHandler? validationEventHandler);
public void Validate(System.Xml.Schema.ValidationEventHandler validationEventHandler);
member this.Validate : System.Xml.Schema.ValidationEventHandler -> unit
Public Sub Validate (validationEventHandler As ValidationEventHandler)

Parameters

validationEventHandler
ValidationEventHandler

The ValidationEventHandler object that receives information about schema validation warnings and errors.

Exceptions

A schema validation event occurred and no ValidationEventHandler object was specified.

Examples

The following example illustrates use of the Validate method. The example creates an XmlDocument that contains an associated XSD schema using the XmlReaderSettings and XmlReader objects. The example then uses the XPathNavigator class to incorrectly modify the typed value of an element in the XML document generating a schema validation error.

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

class XPathValidation
{
 static void Main()
 {
 try
 {
 XmlReaderSettings settings = new XmlReaderSettings();
 settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");
 settings.ValidationType = ValidationType.Schema;

 XmlReader reader = XmlReader.Create("contosoBooks.xml", settings);
 XmlDocument document = new XmlDocument();
 document.Load(reader);

 ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);

 // the following call to Validate succeeds.
 document.Validate(eventHandler);

 // add a node so that the document is no longer valid
 XPathNavigator navigator = document.CreateNavigator();
 navigator.MoveToFollowing("price", "http://www.contoso.com/books");
 XmlWriter writer = navigator.InsertAfter();
 writer.WriteStartElement("anotherNode", "http://www.contoso.com/books");
 writer.WriteEndElement();
 writer.Close();

 // the document will now fail to successfully validate
 document.Validate(eventHandler);
 }
 catch (Exception ex)
 {
 Console.WriteLine(ex.Message);
 }
 }

 static void ValidationEventHandler(object sender, ValidationEventArgs e)
 {
 switch (e.Severity)
 {
 case XmlSeverityType.Error:
 Console.WriteLine("Error: {0}", e.Message);
 break;
 case XmlSeverityType.Warning:
 Console.WriteLine("Warning {0}", e.Message);
 break;
 }
 }
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.Xml.XPath

Class XPathValidation

 Shared Sub Main()

 Try

 Dim settings As XmlReaderSettings = New XmlReaderSettings()
 settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")
 settings.ValidationType = ValidationType.Schema

 Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings)
 Dim document As XmlDocument = New XmlDocument()
 document.Load(reader)

 Dim eventHandler As ValidationEventHandler = New ValidationEventHandler(AddressOf ValidationEventHandler)

 ' the following call to Validate succeeds.
 document.Validate(eventHandler)

 ' add a node so that the document is no longer valid
 Dim navigator As XPathNavigator = document.CreateNavigator()
 navigator.MoveToFollowing("price", "http://www.contoso.com/books")
 Dim writer As XmlWriter = navigator.InsertAfter()
 writer.WriteStartElement("anotherNode", "http://www.contoso.com/books")
 writer.WriteEndElement()
 writer.Close()

 ' the document will now fail to successfully validate
 document.Validate(eventHandler)

 Catch ex As Exception

 Console.WriteLine(ex.Message)

 End Try

 End Sub

 Shared Sub ValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)

 Select Case e.Severity
 Case XmlSeverityType.Error
 Console.WriteLine("Error: {0}", e.Message)
 Case XmlSeverityType.Warning
 Console.WriteLine("Warning {0}", e.Message)
 End Select

 End Sub

End Class

The example takes the contosoBooks.xml and contosoBooks.xsd files as input.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
 <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
 <title>The Autobiography of Benjamin Franklin</title>
 <author>
 <first-name>Benjamin</first-name>
 <last-name>Franklin</last-name>
 </author>
 <price>8.99</price>
 </book>
 <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
 <title>The Confidence Man</title>
 <author>
 <first-name>Herman</first-name>
 <last-name>Melville</last-name>
 </author>
 <price>11.99</price>
 </book>
 <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
 <title>The Gorgias</title>
 <author>
 <name>Plato</name>
 </author>
 <price>9.99</price>
 </book>
</bookstore>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="bookstore">
 <xs:complexType>
 <xs:sequence>
 <xs:element maxOccurs="unbounded" name="book">
 <xs:complexType>
 <xs:sequence>
 <xs:element name="title" type="xs:string" />
 <xs:element name="author">
 <xs:complexType>
 <xs:sequence>
 <xs:element minOccurs="0" name="name" type="xs:string" />
 <xs:element minOccurs="0" name="first-name" type="xs:string" />
 <xs:element minOccurs="0" name="last-name" type="xs:string" />
 </xs:sequence>
 </xs:complexType>
 </xs:element>
 <xs:element name="price" type="xs:decimal" />
 </xs:sequence>
 <xs:attribute name="genre" type="xs:string" use="required" />
 <xs:attribute name="publicationdate" type="xs:date" use="required" />
 <xs:attribute name="ISBN" type="xs:string" use="required" />
 </xs:complexType>
 </xs:element>
 </xs:sequence>
 </xs:complexType>
 </xs:element>
</xs:schema>

Remarks

The Validate method validates the XML data in the XmlDocument against the schemas contained in the Schemas property. The Validate method performs infoset augmentation. Specifically, after successful validation, schema defaults are applied, text values are converted to atomic values as necessary, and type information is associated with validated information items. The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

Consider the following points when using the Validate method:

  • Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.
  • Inline schemas are ignored.
  • If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.
  • The validation process includes checking for uniqueness and reference constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, and xs:unique).

Applies to

Validate(ValidationEventHandler, XmlNode)

Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs
Source:
XmlDocument.cs

Validates the XmlNode object specified against the XML Schema Definition Language (XSD) schemas in the Schemas property.

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler, System::Xml::XmlNode ^ nodeToValidate);
public void Validate(System.Xml.Schema.ValidationEventHandler? validationEventHandler, System.Xml.XmlNode nodeToValidate);
public void Validate(System.Xml.Schema.ValidationEventHandler validationEventHandler, System.Xml.XmlNode nodeToValidate);
member this.Validate : System.Xml.Schema.ValidationEventHandler * System.Xml.XmlNode -> unit
Public Sub Validate (validationEventHandler As ValidationEventHandler, nodeToValidate As XmlNode)

Parameters

validationEventHandler
ValidationEventHandler

The ValidationEventHandler object that receives information about schema validation warnings and errors.

nodeToValidate
XmlNode

The XmlNode object created from an XmlDocument to validate.

Exceptions

The XmlNode object parameter was not created from an XmlDocument.

The XmlNode object parameter is not an element, attribute, document fragment, or the root node.

A schema validation event occurred and no ValidationEventHandler object was specified.

Examples

For an example of the Validate method, see the Validate method.

Remarks

The Validate method validates the XML data in the XmlNode object against the schemas contained in the Schemas property. The Validate method performs infoset augmentation. Specifically, after successful validation, schema defaults are applied, text values are converted to atomic values as necessary, and type information is associated with validated information items. The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

The following are important notes to consider when using the Validate method.

  • Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.

  • Inline schemas are ignored.

  • If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.

If the node to validate is the root node, the validation process includes checking for uniqueness and reference constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, and xs:unique); otherwise, uniqueness and reference constraints are omitted.

Applies to


Feedback

Was this page helpful?