Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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 ();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement