ubiquitour.com

Cómo usar Xsd en red

Definición de esquema XML, XSD, es el estándar más ampliamente aceptado para definir la estructura de documentos XML. Esquemas pueden definir restricciones, atributos opcionales y requeridos dentro de un documento XML. Net permite validación de XML con esquemas uno o más antes de procesar el contenido. Validar XML reduce la cantidad de excepciones que se deben realizar en el código y las capturas de errores en el formato de datos que de lo contrario podrían pasar por alto.

Instrucciones

Validación de XML usando XmlReaderSettings

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

2 Abrir el cuadro de diálogo "Agregar nuevo elemento" haciendo clic en "Proyecto" y luego haciendo clic en "Añadir clase".

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

4 Haga clic derecho en el proyecto en el explorador de soluciones para mostrar el menú de proyecto.

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

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 clase nueva utilizando el siguiente código:

bool privado ValidateDocument (xmlFile string, string xsdFile)

{

XmlReaderSettings settings = new XmlReaderSettings{ValidationType

= ValidationType.Schema};

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

XmlReader reader = XmlReader.Create(xmlFile, settings);

try

{

while(reader.Read());

return true;

}

catch (XmlSchemaValidationException ex)

{

// indicates a validation error occurred.

return false;

}

}

Este código carga el XML en un XmlReader y un esquema XML en un XMLSchemaSet. Todos los atributos y 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álido, se produce una XmlSchemaValidationException. La excepción incluye un mensaje de error, número de línea y posición donde se produjo el error. Proceso se detiene en el primer error encontrado.

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

Configuración. ValidationEventHandler += ValidationHandler;

Static void ValidationHandler (remitente de objeto, ValidationEventArgs e)

{

evento de proceso aquí

}

Validación de XML usando LINQ

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

9 Abrir el cuadro de diálogo "Agregar nuevo elemento" haciendo clic en "Proyecto" y luego haciendo clic en "Añadir clase".

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

11 Haga clic derecho en el proyecto en el explorador de soluciones para mostrar el menú de proyecto.

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

13 Seleccione System.XML y System.Linq de la 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 clase nueva utilizando el siguiente código:

bool privado ValidateDocument (xmlFile string, string xsdFile)

{

// Create the XML document to validate against.

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

XmlSchemaSet schema = new XmlSchemaSet();

bool isError = new bool(); // Defaults to false.

int countError = 1; // Counts the number of errors have generated.

// Add the schema file you want to validate against.

schema.Add(null, xsdFile);

// Call validate and use a LAMBDA Expression as extended method!

// Don't you love .NET 3.5 and LINQ...

xDoc.Validate(schema, (sender, e) =>

{ switch (e.Severity)

{ case XmlSeverityType.Error:

break;

case XmlSeverityType.Warning:

break;

}

countError++;

isError = true; // If error fires, flag it to handle once call is complete.

}

, true); // True tells the validate call to populate the post-schema-validation

// which you will need later, if you want to dive a littel deeper...

return isError;

}

Este código carga el XML en un XDocument y un esquema XML en un XMLSchemaSet. Llama al método Validate de XDocument usando una expresión lambda como el ValidationEventHandler.