Esempio n. 1
0
        protected override void XmlValidar()
        {
            var xml = EnvEvento;

            var schemaArquivo           = string.Empty;
            var schemaArquivoEspecifico = string.Empty;

            if (Configuracoes.SchemasEspecificos.Count > 0)
            {
                schemaArquivo           = Configuracoes.SchemasEspecificos[((int)xml.Evento[0].InfEvento.TpEvento).ToString()].SchemaArquivo;
                schemaArquivoEspecifico = Configuracoes.SchemasEspecificos[((int)xml.Evento[0].InfEvento.TpEvento).ToString()].SchemaArquivoEspecifico;
            }

            #region Validar o XML geral

            ValidarXMLEvento(ConteudoXML, schemaArquivo, Configuracoes.TargetNS);

            #endregion Validar o XML geral

            #region Validar a parte específica de cada evento

            var listEvento = ConteudoXML.GetElementsByTagName("evento");
            for (var i = 0; i < listEvento.Count; i++)
            {
                var elementEvento = (XmlElement)listEvento[i];

                if (elementEvento.GetElementsByTagName("infEvento")[0] != null)
                {
                    var elementInfEvento = (XmlElement)elementEvento.GetElementsByTagName("infEvento")[0];
                    if (elementInfEvento.GetElementsByTagName("tpEvento")[0] != null)
                    {
                        var tpEvento = elementInfEvento.GetElementsByTagName("tpEvento")[0].InnerText;

                        var tipoEventoNFe = (TipoEventoNFe)Enum.Parse(typeof(TipoEventoNFe), tpEvento);

                        var xmlEspecifico = new XmlDocument();
                        switch (tipoEventoNFe)
                        {
                        case TipoEventoNFe.CartaCorrecao:
                            xmlEspecifico.LoadXml(XMLUtility.Serializar <DetEventoCCE>((DetEventoCCE)xml.Evento[i].InfEvento.DetEvento).OuterXml);
                            break;

                        case TipoEventoNFe.Cancelamento:
                            xmlEspecifico.LoadXml(XMLUtility.Serializar <DetEventoCanc>((DetEventoCanc)xml.Evento[i].InfEvento.DetEvento).OuterXml);
                            break;

                        case TipoEventoNFe.CancelamentoPorSubstituicao:
                            break;

                        case TipoEventoNFe.EPEC:
                            break;

                        case TipoEventoNFe.PedidoProrrogacao:
                            break;

                        case TipoEventoNFe.ManifestacaoConfirmacaoOperacao:
                            break;

                        case TipoEventoNFe.ManifestacaoCienciaOperacao:
                            break;

                        case TipoEventoNFe.ManifestacaoDesconhecimentoOperacao:
                            break;

                        case TipoEventoNFe.ManifestacaoOperacaoNaoRealizada:
                            break;

                        default:
                            throw new Exception("Não foi possível identificar o tipo de evento.");
                        }

                        ValidarXMLEvento(xmlEspecifico, schemaArquivoEspecifico, Configuracoes.TargetNS);
                    }
                }
            }

            #endregion Validar a parte específica de cada evento
        }
Esempio n. 2
0
 /// <summary>
 /// Serializar o objeto (Converte o objeto para XML)
 /// </summary>
 /// <typeparam name="T">Tipo do objeto</typeparam>
 /// <param name="retorno">Objeto a ser serializado</param>
 /// <returns>String contendo o XML</returns>
 public virtual XmlDocument GerarXML()
 {
     return(XMLUtility.Serializar(this, NameSpaces));
 }