Created
June 4, 2016 02:09
-
-
Save Fhernd/aa589370fdc3a6b1016760221fb429b4 to your computer and use it in GitHub Desktop.
Validador de archivos XML a través de un esquema.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Xml; | |
using System.Xml.Schema; | |
namespace Recetas.CSharp.R0608 | |
{ | |
public class Validador | |
{ | |
// Campo centinela en caso de fallas en el validador: | |
private bool fallo; | |
public bool Fallo | |
{ | |
get | |
{ | |
return fallo; | |
} | |
} | |
///<summary> | |
/// Valida un documento XML respecto a un esquema de conformidad. | |
///</summary> | |
public bool ValidarXml(string nombreArchivoXml, string nombreArchivoEsquema) | |
{ | |
// Configuración del tipo de validación: | |
XmlReaderSettings configEsquema = new XmlReaderSettings(); | |
configEsquema.ValidationType = ValidationType.Schema; | |
// Carga del archivo de esquema: | |
XmlSchemaSet esquema = new XmlSchemaSet(); | |
configEsquema.Schemas = esquema; | |
// Especificación del archivo de esquema: | |
esquema.Add(null, nombreArchivoEsquema); | |
// Manejador de eventos de error: | |
configEsquema.ValidationEventHandler += ManejadorEventosValidacion; | |
// Creación del lector de validación: | |
XmlReader validador = XmlReader.Create(nombreArchivoXml, configEsquema); | |
fallo = false; | |
try | |
{ | |
// Lectura de todo el contenido del archivo XML: | |
while(validador.Read()){} | |
} | |
catch(XmlException error) | |
{ | |
// Generación de excepción que responde a errores | |
// sintácticos en el documento XML: | |
Console.WriteLine ("Un error crítico ha ocurrido. Revise la sintaxis del documento XML."); | |
Console.WriteLine (error.Message); | |
fallo = true; | |
} | |
finally | |
{ | |
validador.Close(); | |
} | |
return !fallo; | |
} | |
// Manejador de los eventos de error en la validación del | |
// documento XML frente al esquema: | |
private void ManejadorEventosValidacion(object sender, ValidationEventArgs args) | |
{ | |
fallo = true; | |
// Muestra error de validación: | |
Console.WriteLine ("Error de validación: {0}", args.Message); | |
Console.WriteLine (); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment