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 }
/// <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)); }