XML Schema Definition , XSD , es el estándar más ampliamente aceptado para definir la estructura de los documentos XML . Los esquemas pueden definir restricciones, opcionales y atributos requeridos dentro de un documento XML. . Net permite la validación de XML mediante uno o más esquemas antes de procesar el contenido . Validación de XML reduce el manejo de excepciones cantidad que debe realizarse en el código y captura los errores en el formato de los datos que de otro modo podrían pasar por alto. Cosas que necesitará
Visual Studio 2008 o superior
conocimientos de nivel intermedio . Programación Net
Ver Más instrucciones
XML Validación Uso XmlReaderSettings
1
Crear un nuevo proyecto de C # del tipo deseado en Visual Studio. Si desea agregar la validación XML a un proyecto existente , puede saltarse este paso.
2 Abra el cuadro de diálogo " Agregar nuevo elemento " haciendo clic en " proyecto" y haga clic en " Agregar clase . "
3
Especifique un nombre para la nueva clase que se adhiere a los estándares y prácticas de codificación de nombres.
4 Haga clic en el proyecto en el Explorador de soluciones para visualizar el menú proyecto.
5
Seleccione " Agregar referencia " en el menú para mostrar el cuadro de diálogo "Add Reference " .
6
Seleccione System.XML de la lista de componentes y haga clic en el botón "Select" . A continuación , haga clic en " Aceptar".
7
Agregar un método a la nueva clase con el siguiente código :
privado ValidateDocument bool ( string xmlFile , cadena xsdFile )
< p > {
XmlReaderSettings configuración = new XmlReaderSettings { ValidationType
= reader = XmlReader.Create ( xmlFile , configuración ) ;
tratar
{ while ( reader.Read ());
return true ;
}
catch ( XmlSchemaValidationException ex )
{
//indica que se produjo un error de validación
return false ; .
}
}
Este código carga XML en un XmlReader y un esquema XML en un XmlSchemaSet. Todos los atributos y los elementos del documento XML se validan cuando se lee el documento , no hay necesidad de visitar los elementos individualmente. Si el documento XML no es válido un XmlSchemaValidationException es lanzada. La excepción incluye un mensaje de error , número de línea y el lugar donde se cometió el error. . El proceso se detiene en el primer error encontrado
Si desea procesar todo el documento y ver los errores , y no sólo el primer error , puede agregar un controlador de errores para el evento ValidationEventHandler usando el siguiente código :
settings.ValidationEventHandler + = ValidationHandler ;
ValidationHandler static void ( object sender , ValidationEventArgs e)
/evento /proceso
{ aquí
}
Validación de XML con LINQ
8
Crear un nuevo proyecto de C # del tipo deseado en Visual Studio. Si desea agregar la validación XML a un proyecto existente , puede saltarse este paso.
9
Abra el cuadro de diálogo " Agregar nuevo elemento " haciendo clic en " proyecto" y haga clic en " Agregar clase . "
10
Especifique un nombre para la nueva clase que se adhiere a los estándares y prácticas de codificación de nombres.
11
Haga clic en el proyecto en el Explorador de soluciones para mostrar el proyecto menú.
12
Seleccione " Agregar referencia " en el menú para mostrar el cuadro de diálogo "Add Reference " .
13
Select System.XML y System.Linq del lista de componentes y haga clic en el botón "Select" . A continuación , haga clic en " Aceptar".
14
Agregar un método a la nueva clase con el siguiente código :
privado ValidateDocument bool ( string xmlFile , cadena xsdFile )
< p > {
//Crear el documento XML para validar contra
XDocument xDoc = XDocument.Load ( xmlFile , LoadOptions.PreserveWhitespace ) .
XmlSchemaSet esquema = new XmlSchemaSet ( ) ;
bool isError = new int (); //el valor predeterminado es false
int countError = 1 , .. //Cuenta el número de errores han generado
//Agregar el archivo de esquema que desea validar contra
schema.Add (null, xsdFile ) . !
//Llamar a validar y utilizar una expresión lambda como método extendida
< p > //no te quiero . NET 3.5 y LINQ ...
xDoc.Validate ( esquema, ( sender, e) = >
{switch ( e.Severity )
{case XmlSeverityType.Error :
break;
caso XmlSeverityType.Warning :
break; }
< p > countError + + ;
isError = true //Si se dispara el error , bandera que le permite manejar una llamada se haya completado
}
, true) ; . //true indica al validar llame a poblar el post- validación del esquema
//que necesitará más adelante, si quieres bucear un littel más ...
regreso isError ;
}
Este código carga XML en un XDocument y un esquema XML en un XmlSchemaSet. A continuación, llama al método Validate en el XDocument usando una expresión lambda como ValidationEventHandler .