Validation par rapport à un schéma XDR inline
Vous pouvez utiliser XmlValidatingReader pour valider un document XML par rapport à un schéma XDR (XML-Data Reduced) inline.
L'exemple de code ci-dessous crée une classe XmlValidatingReader qui prend XmlTextReader. Le fichier d'entrée, HeadCount.xml, est validé par rapport au schéma XDR inline.
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Namespace ValidationSample
Class Sample
Public Shared Sub Main()
Dim tr As New XmlTextReader("HeadCount.xml")
Dim vr As New XmlValidatingReader(tr)
vr.ValidationType = ValidationType.XDR
AddHandler vr.ValidationEventHandler, AddressOf ValidationHandler
While vr.Read()
End While
Console.WriteLine("Validation finished")
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)
End Sub
' ValidationHandler
End Class
' Sample
End Namespace
' ValidationSample
[C#]
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
namespace ValidationSample
{
class Sample
{
public static void Main()
{
XmlTextReader tr = new XmlTextReader("HeadCount.xml");
XmlValidatingReader vr = new XmlValidatingReader(tr);
vr.ValidationType = ValidationType.XDR;
vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);
while(vr.Read());
Console.WriteLine("Validation finished");
}
public static void ValidationHandler(object sender, ValidationEventArgs args)
{
Console.WriteLine("***Validation error");
Console.WriteLine("\tSeverity:{0}", args.Severity);
Console.WriteLine("\tMessage :{0}", args.Message);
}
}
}
Le code ci-dessous présente le contenu du fichier d'entrée, HeadCount.xml, à valider.
<root>
<Schema name='xdrHeadCount' xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="Name" content="textOnly"/>
<ElementType name="HeadCount" content="eltOnly">
<element type="Name"/>
</ElementType>
</Schema>
<HeadCount xmlns='x-schema:#xdrHeadCount'>
<Name>Waldo Pepper</Name>
<Name>Red Pepper</Name>
</HeadCount>
</root>
L'exemple de code ci-dessous crée une classe XmlValidatingReader qui prend XmlTextReader. Le fichier d'entrée, sample3.xml, est validé par rapport au schéma XDR inline. Comme il n'y a pas d'attribut xmlns, le schéma inline est le schéma par défaut. Dans ce cas précis, la déclaration d'espace de noms, xmlns="x-schema"
, n'est pas nécessaire.
Dim tr As New XmlTextReader("sample3.xml")
Dim vr As New XmlValidatingReader(tr)
vr.ValidationType = ValidationType.XDR
AddHandler vr.ValidationEventHandler, AddressOf ValidationCallBack
While vr.Read()
Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name)
End While
[C#]
XmlTextReader tr = new XmlTextReader("sample3.xml");
XmlValidatingReader vr = new XmlValidatingReader(tr);
vr.ValidationType = ValidationType.XDR;
vr.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
while(vr.Read()) {
Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name);
}
Le code ci-dessous présente le contenu du fichier d'entrée, sample3.xml, à valider.
<root>
<Schema
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name='row'>
</ElementType>
<ElementType name='data'>
<element type='row' minOccurs='0' maxOccurs='*'/>
</ElementType>
</Schema>
<data>
<row/>
<row/>
</data>
</root>
Voir aussi
Validation XML à l'aide de XmlValidatingReader | Validation XML à l'aide de schémas