Tecnología

Inicio

Cómo utilizar Xsd en Net

Definición de esquemas XML, XSD, es el estándar más ampliamente aceptado para definir la estructura de los documentos XML. Los esquemas pueden definir restricciones, atributos opcionales y requeridos dentro de un documento XML. .Net Permite la validación de XML usando uno o más esquemas antes de procesar el contenido. La 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 datos que de otra manera podría pasar por alto.

Instrucciones

El uso de XML Validación XmlReaderSettings

1 Crear un nuevo proyecto de C # del tipo deseado en Visual Studio. Si desea agregar validación de XML a un proyecto existente, puede saltarse este paso.

2 Abra el "Agregar nuevo elemento" cuadro de diálogo haciendo clic en "Proyecto" y luego haciendo clic en "Agregar clase."

3 Especificar un nombre para la nueva clase que se adhiere a sus prácticas estándares de codificación y nomenclatura.

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 "Agregar referencia".

6 Seleccionar System.XML de la lista de componentes y haga clic en el botón "Seleccionar". A continuación, haga clic en "Aceptar".

7 Añadir un método para la nueva clase usando el siguiente código:

ValidateDocument private bool (string xmlFile, cadena xsdFile)

{

XmlReaderSettings settings = new XmlReaderSettings{ValidationType

= ValidationType.Schema};

settings.Schemas.Add (XmlSchema.Read (XmlReader.Create (xsdFile)));

lector de XmlReader = XmlReader.Create (xmlFile, ajustes);

tratar

{

while (reader.Read ());

return true;

}

captura (XmlSchemaValidationException ex)

{

// Indica que se produjo un error de validación.

falso retorno;

}

}

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 elementos individualmente. Si el documento XML no es válida se lanza un XmlSchemaValidationException. La excepción incluye un mensaje de error, número de línea y el lugar donde se produjo el error. El proceso se detiene en el primer error encontrado.

Si desea procesar todo el documento y ver todos los errores, no sólo el primer error, se puede añadir un controlador de errores para el evento ValidationEventHandler usando el siguiente código:

settings.ValidationEventHandler + = ValidationHandler;

ValidationHandler static void (object sender, ValidationEventArgs e)

{

// Evento del proceso aquí

}

Validación XML mediante LINQ

8 Crear un nuevo proyecto de C # del tipo deseado en Visual Studio. Si desea agregar validación de XML a un proyecto existente, puede saltarse este paso.

9 Abra el "Agregar nuevo elemento" cuadro de diálogo haciendo clic en "Proyecto" y luego haciendo clic en "Agregar clase."

10 Especificar un nombre para la nueva clase que se adhiere a sus prácticas estándares de codificación y nomenclatura.

11 Haga clic en el proyecto en el Explorador de soluciones para visualizar el menú proyecto.

12 Seleccione "Agregar referencia" en el menú para mostrar el cuadro de diálogo "Agregar referencia".

13 Seleccionar System.XML y System.Linq de la lista de componentes y haga clic en el botón "Seleccionar". A continuación, haga clic en "Aceptar".

14 Añadir un método para la nueva clase usando el siguiente código:

ValidateDocument private bool (string xmlFile, cadena xsdFile)

{

// Create the XML document to validate against.

XDocument xdoc = XDocument.Load (xmlFile, LoadOptions.PreserveWhitespace);

XmlSchemaSet esquema = new XmlSchemaSet ();

bool isError = new bool (); // El valor predeterminado es falso.

int countError = 1; // Cuenta el número de errores han generado.

// Añadir el archivo de esquema que desea validar contra.

schema.Add (nulo, xsdFile);

// Llamar a validar y utilizar una expresión lambda como método extendido!

// ¿No te encanta .NET 3.5 y LINQ ...

xDoc.Validate (esquema, (remitente, e) =>

{Switch (e.Severity)

{XmlSeverityType.Error caso:

descanso;

XmlSeverityType.Warning caso:

descanso;

}

countError ++;

isError = true; // Si se dispara el error, la bandera que le permite manejar una vez que la llamada se ha completado.

}

, cierto); // La verdadera cuenta la llamada de validación para poblar el post-validación de esquema

// Que necesitará más adelante, si quieres bucear un Littel más profundo ...

volver isError;

}

Este código carga XML en un XDocument y un esquema XML en un XmlSchemaSet. A continuación, llama al método de validación en el XDocument usando una expresión lambda como el ValidationEventHandler.