Validation par rapport à un schéma XSD inline
Vous pouvez effectuer une validation par rapport à un schéma de langage XSD (XML Schema Definition) inline à l'aide de l'objet XmlValidatingReader.
Remarque |
---|
La classe XmlValidatingReader est obsolète dans le .NET Framework version 2.0.Vous pouvez créer une instance de l'objet XmlReader de validation à l'aide de la classe XmlReaderSettings et de la méthode Create.Pour plus d'informations, voir Validation de données XML avec XmlReader. |
Exemple
L'exemple de code suivant crée un objet XmlValidatingReader qui prend un objet XmlTextReader. Le fichier d'entrée, HeadCount.xml, est validé par rapport au schéma XML inline.
Remarque |
---|
Dans la mesure où le schéma inline apparaît comme un élément enfant de l'élément racine, cet élément racine ne peut pas être validé lors d'une validation de schéma inline.L'objet XmlValidatingReader génère un avertissement pour l'élément racine si la propriété ValidationType a la valeur Schema. |
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Namespace ValidationSample
Class Sample
Private Shared _ValidationErrorsCount As Integer = 0
Public Shared Sub Main()
Dim stream As New FileStream("HeadCount.xml", FileMode.Open)
Dim vr As New XmlValidatingReader(stream, XmlNodeType.Element, Nothing)
vr.ValidationType = ValidationType.Schema
AddHandler vr.ValidationEventHandler, AddressOf ValidationHandler
While vr.Read()
End While
Console.WriteLine("Validation finished: {0} validation errors", _ValidationErrorsCount)
End Sub
' Main
Public Shared Sub ValidationHandler(sender As Object, args As ValidationEventArgs)
Console.WriteLine("***Validation error")
Console.WriteLine("Severity:{0}", args.Severity)
Console.WriteLine("Message:{0}", args.Message)
_ValidationErrorsCount += 1
End Sub
' ValidationHandler
End Class
' Sample
End Namespace
' ValidationSample
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
namespace ValidationSample
{
class Sample
{
static int _ValidationErrorsCount = 0;
public static void Main()
{
FileStream stream = new FileStream("HeadCount.xml", FileMode.Open);
XmlValidatingReader vr = new XmlValidatingReader(stream, XmlNodeType.Element, null);
vr.ValidationType = ValidationType.Schema;
vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);
while(vr.Read());
Console.WriteLine("Validation finished: {0} validation errors", _ValidationErrorsCount);
}
public static void ValidationHandler(object sender, ValidationEventArgs args)
{
Console.WriteLine("***Validation error");
Console.WriteLine("\tSeverity:{0}", args.Severity);
Console.WriteLine("\tMessage :{0}", args.Message);
_ValidationErrorsCount++;
}
}
}
Le code suivant présente le contenu du fichier d'entrée, HeadCount.xml, à valider.
<root>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
xmlns='xsdHeadCount'
targetNamespace='xsdHeadCount'>
<xs:element name='HeadCount'>
<xs:complexType>
<xs:sequence>
<xs:element name='Name' type='xs:string' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='division' type='xs:string' use='optional' default='QA'/>
</xs:complexType>
</xs:element>
</xs:schema>
<hc:HeadCount xmlns:hc='xsdHeadCount'>
<Name>Waldo Pepper</Name>
<Name>Red Pepper</Name>
</hc:HeadCount>
</root>
L'exemple de code suivant crée un objet XmlValidatingReader qui prend un objet XmlTextReader. Le fichier d'entrée, Sample5.xml, est validé par rapport au schéma XML inline.
Dim tr As New XmlTextReader("Sample5.xml")
Dim vr As New XmlValidatingReader(tr)
vr.ValidationType = ValidationType.Schema
AddHandler vr.ValidationEventHandler, AddressOf ValidationCallBack
While vr.Read()
Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name)
End While
XmlTextReader tr = new XmlTextReader("Sample5.xml");
XmlValidatingReader vr = new XmlValidatingReader(tr);
vr.ValidationType = ValidationType.Schema;
vr.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
while(vr.Read()) {
Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name);
}
Le code suivant présente le contenu du fichier d'entrée, Sample5.xml, à valider.
<test>
<schema targetNamespace='test' xmlns='http://www.w3.org/2001/XMLSchema' >
<element name='zip' type='positiveInteger'/>
</schema>
<t:zip xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:t='test'>
123
</t:zip>
</test>