Esempio n. 1
0
        /// <summary>
        /// Valida o XML de acordo com o schema.
        /// </summary>
        /// <param name="xml">A mensagem XML que deve ser verificada.</param>
        /// <param name="provedor">O provedor.</param>
        /// <param name="schema">O schema que será usado na verificação.</param>
        /// <returns>Se estiver tudo OK retorna null, caso contrário as mensagens de alertas e erros.</returns>
        protected RetornoWebservice ValidarSchema(string xml, string schema)
        {
            schema = Path.Combine(Config.Geral.PathSchemas, Name, schema);
            string[] errosSchema;
            string[] alertasSchema;
            if (!CertificadoDigital.ValidarXml(xml, schema, out errosSchema, out alertasSchema))
            {
                var retLote = new RetornoWebservice
                {
                    Assincrono = true,
                    XmlEnvio   = xml
                };

                foreach (var erro in errosSchema.Select(descricao => new Evento {
                    Codigo = "0", Descricao = descricao
                }))
                {
                    retLote.Erros.Add(erro);
                }

                foreach (var alerta in alertasSchema.Select(descricao => new Evento {
                    Codigo = "0", Descricao = descricao
                }))
                {
                    retLote.Alertas.Add(alerta);
                }

                return(retLote);
            }
            return(null);
        }