Проверка по встроенной XDR-схеме
Класс XmlValidatingReader предназначен для проверки XML-документа по встроенной схеме XDR.
Примечание
Класс XmlValidatingReader в версии .NET Framework 2.0 устарел.Экземпляр XmlReader для проверки можно создать с помощью класса XmlReaderSettings и метода Create.Дополнительные сведения см. в разделе Проверка XML-данных с помощью XmlReader.
Пример
Следующий пример кода создает XmlValidatingReader, принимающий XmlTextReader.Входной файл HeadCount.xml проверяется по встроенной схеме XDR.
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
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);
}
}
}
Ниже описано содержимое проверяемого входного файла HeadCount.xml.
<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>
Следующий пример кода создает XmlValidatingReader, принимающий XmlTextReader.Входной файл sample3.xml проверяется по встроенной схеме XDR.Поскольку отсутствует атрибут xmlns, встроенная схема задается как схема по умолчанию.В этом случае необязательна декларация пространства имен xmlns="x-schema".
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
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);
}
Следующий код выделяет содержимое входного файла sample3.xml для проверки.
<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>
См. также
Основные понятия
Чтение XML с помощью XmlReader