Advertisement
Fhernd

Validador.cs

Jun 3rd, 2016
3,141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.47 KB | None | 0 0
  1. using System;
  2. using System.Xml;
  3. using System.Xml.Schema;
  4.  
  5. namespace Recetas.CSharp.R0608
  6. {
  7.     public class Validador
  8.     {
  9.         // Campo centinela en caso de fallas en el validador:
  10.         private bool fallo;
  11.        
  12.         public bool Fallo
  13.         {
  14.             get
  15.             {
  16.                 return fallo;
  17.             }
  18.         }
  19.        
  20.         ///<summary>
  21.         /// Valida un documento XML respecto a un esquema de conformidad.
  22.         ///</summary>
  23.         public bool ValidarXml(string nombreArchivoXml, string nombreArchivoEsquema)
  24.         {
  25.             // Configuración del tipo de validación:
  26.             XmlReaderSettings configEsquema = new XmlReaderSettings();
  27.             configEsquema.ValidationType = ValidationType.Schema;
  28.            
  29.             // Carga del archivo de esquema:
  30.             XmlSchemaSet esquema = new XmlSchemaSet();
  31.             configEsquema.Schemas = esquema;
  32.            
  33.             // Especificación del archivo de esquema:
  34.             esquema.Add(null, nombreArchivoEsquema);
  35.            
  36.             // Manejador de eventos de error:
  37.             configEsquema.ValidationEventHandler += ManejadorEventosValidacion;
  38.            
  39.             // Creación del lector de validación:
  40.             XmlReader validador = XmlReader.Create(nombreArchivoXml, configEsquema);
  41.            
  42.             fallo = false;
  43.             try
  44.             {
  45.                 // Lectura de todo el contenido del archivo XML:
  46.                 while(validador.Read()){}
  47.             }
  48.             catch(XmlException error)
  49.             {
  50.                 // Generación de excepción que responde a errores
  51.                 // sintácticos en el documento XML:
  52.                 Console.WriteLine ("Un error crítico ha ocurrido. Revise la sintaxis del documento XML.");
  53.                 Console.WriteLine (error.Message);
  54.                 fallo = true;
  55.             }
  56.             finally
  57.             {
  58.                 validador.Close();
  59.             }
  60.            
  61.             return !fallo;
  62.         }
  63.        
  64.         // Manejador de los eventos de error en la validación del
  65.         // documento XML frente al esquema:
  66.         private void ManejadorEventosValidacion(object sender, ValidationEventArgs args)
  67.         {
  68.             fallo = true;
  69.            
  70.             // Muestra error de validación:
  71.             Console.WriteLine ("Error de validación: {0}", args.Message);
  72.             Console.WriteLine ();
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement