Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: November 2007
Puede realizar la validación con respecto a un esquema de lenguaje de definición de esquemas XML (XSD) en línea mediante XmlValidatingReader.
Nota: |
|---|
La clase XmlValidatingReader es obsoleta en .NET Framework versión 2.0. Se puede crear una instancia de validación XmlReader mediante la clase XmlReaderSettings y el método Create. Para obtener más información, vea Validación de datos XML con XmlReader. |
Ejemplo
El siguiente ejemplo de código crea XmlValidatingReader que toma XmlTextReader. El archivo de entrada, HeadCount.xml, se valida con respecto a un esquema XML en línea.
Nota: |
|---|
Dado que el esquema en línea aparece como elemento secundario del elemento raíz, éste no se puede validar cuando se realiza una validación de esquema en línea. XmlValidatingReader lanza una advertencia para el elemento raíz si ValidationType se establece en 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++;
}
}
}
A continuación se describe el contenido del archivo de entrada, HeadCount.xml, que se va a validar.
<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>
El siguiente ejemplo de código crea XmlValidatingReader que toma XmlTextReader. El archivo de entrada, Sample5.xml, se valida con respecto a un esquema XML en línea.
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);
}
A continuación se describe el contenido del archivo de entrada, Sample5.xml, que se va a validar.
<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>
Vea también
Conceptos
Leer fragmentos de XML con XmlReader
Nota: