Class XMLUtility
Utilitários diversos para trabalhar com XML
Inheritance
Inherited Members
Namespace: Unimake.Business.DFe.Utility
Assembly: Unimake.Business.DFe.dll
Syntax
public static class XMLUtility
Methods
CalcularDVChave(String)
Gerar o dígito da chave da NFe, CTe, MDFe ou NFCe
Declaration
public static int CalcularDVChave(string chave)
Parameters
Type | Name | Description |
---|---|---|
System.String | chave | Chave do DFe (sem o dígito) que deve ser calculado o dígito verificador. |
Returns
Type | Description |
---|---|
System.Int32 | Dígito verificador |
ChecarChaveDFe(String)
Executa uma verificação simples para garantir que a chave do DFe (NFe, CTe, MDfe, NFCe, CTeOS) é valida, se tiver erros retorna exceção.
Declaration
public static void ChecarChaveDFe(string chave)
Parameters
Type | Name | Description |
---|---|---|
System.String | chave | Chave do DFe a ser verificada |
Examples
try { XMLUtility.ChecarChaveDFe("41201280568835000181570010000004841004185096"); } catch(Exception ex) { //Se chave tiver algum erro, vai retornar uma exceção. MessageBox.Show(ex.Message); }
ClearExtraSpaces(String)
Limpar espaços desnecessários da string, por exemplo: Espaços duplos no meio da sentença, espaços no inicio ou final da sentença.
Declaration
public static string ClearExtraSpaces(string content)
Parameters
Type | Name | Description |
---|---|---|
System.String | content |
Returns
Type | Description |
---|---|
System.String | Retorna string sem os espaços desnecessários |
Examples
var texto = " Eu vou ao supermercado comprar alimentos. "; texto = XMLUtility.LimparEspacoDesnecessario(texto); MessageBox.Show(texto); // Retorno será: "Eu vou ao supermercado comprar alimentos."
See Also
Deserializar<T>(String)
Desserializar XML (Converte o XML para um objeto)
Declaration
public static T Deserializar<T>(string xml)
where T : new()
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | String do XML a ser desserializado |
Returns
Type | Description |
---|---|
T | Retorna o objeto com o conteúdo do XML desserializado |
Type Parameters
Name | Description |
---|---|
T | Tipo do objeto |
Deserializar<T>(XmlDocument)
Desserializar XML (Converte o XML para um objeto)
Declaration
public static T Deserializar<T>(XmlDocument doc)
where T : new()
Parameters
Type | Name | Description |
---|---|---|
System.Xml.XmlDocument | doc | Conteúdo do XML a ser desserializado |
Returns
Type | Description |
---|---|
T | Retorna o objeto com o conteúdo do XML desserializado |
Type Parameters
Name | Description |
---|---|
T | Tipo do objeto |
DetectDFeType(String)
Detectar qual o tipo de documento fiscal eletrônico do XML
Declaration
public static TipoDFe DetectDFeType(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | XML a ser analisado |
Returns
Type | Description |
---|---|
TipoDFe | Retorna o tipo do documento eletrônico |
DetectDFeType(XmlDocument)
Detectar qual o tipo de documento fiscal eletrônico do XML
Declaration
public static TipoDFe DetectDFeType(XmlDocument xml)
Parameters
Type | Name | Description |
---|---|---|
System.Xml.XmlDocument | xml | XML a ser analisado |
Returns
Type | Description |
---|---|
TipoDFe | Retorna o tipo do documento eletrônico |
DetectEventByDFeType(String)
Retorna o tipo de documento fiscal com base no XML de evento.
Declaration
public static TipoDFe DetectEventByDFeType(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | XML válido de evento. |
Returns
Type | Description |
---|---|
TipoDFe |
DetectEventoCTeType(String)
Detectar qual o tipo de evento do CT-e.
Declaration
public static TipoEventoCTe DetectEventoCTeType(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | XML a ser analisado |
Returns
Type | Description |
---|---|
TipoEventoCTe | Retorna o tipo do evento do CT-e |
DetectEventoCTeType(XmlDocument)
Detectar qual o tipo de evento do CT-e.
Declaration
public static TipoEventoCTe DetectEventoCTeType(XmlDocument xml)
Parameters
Type | Name | Description |
---|---|---|
System.Xml.XmlDocument | xml | XML a ser analisado |
Returns
Type | Description |
---|---|
TipoEventoCTe | Retorna o tipo do evento do CT-e |
DetectEventoMDFeType(String)
Detectar qual o tipo de evento do MDF-e.
Declaration
public static TipoEventoMDFe DetectEventoMDFeType(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | XML a ser analisado |
Returns
Type | Description |
---|---|
TipoEventoMDFe | Retorna o tipo do evento do MDF-e |
DetectEventoMDFeType(XmlDocument)
Detectar qual o tipo de evento do MDF-e.
Declaration
public static TipoEventoMDFe DetectEventoMDFeType(XmlDocument xml)
Parameters
Type | Name | Description |
---|---|---|
System.Xml.XmlDocument | xml | XML a ser analisado |
Returns
Type | Description |
---|---|
TipoEventoMDFe | Retorna o tipo do evento do MDF-e |
DetectEventoNFeType(String)
Detectar qual o tipo de evento do documento fiscal eletrônico do XML
Declaration
public static TipoEventoNFe DetectEventoNFeType(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | XML a ser analisado |
Returns
Type | Description |
---|---|
TipoEventoNFe | Retorna o tipo do evento do documento eletrônico |
DetectEventoNFeType(XmlDocument)
Detectar qual o tipo de evento do documento fiscal eletrônico do XML
Declaration
public static TipoEventoNFe DetectEventoNFeType(XmlDocument xml)
Parameters
Type | Name | Description |
---|---|---|
System.Xml.XmlDocument | xml | XML a ser analisado |
Returns
Type | Description |
---|---|
TipoEventoNFe | Retorna o tipo do evento do documento eletrônico |
DetectXMLType(XmlDocument)
De acordo com os dados do XML será detectado de qual tipo ele é: XML de NFe, CTe, Consulta Status, Consulta Situação, Evento, etc...
Declaration
public static TipoXML DetectXMLType(XmlDocument xmlDoc)
Parameters
Type | Name | Description |
---|---|---|
System.Xml.XmlDocument | xmlDoc |
Returns
Type | Description |
---|---|
TipoXML |
ExtrairConteudoChaveDFe(String)
Extrair conteúdo da chave do documento fiscal eletrônico (NFe, NFCe, CTe, MDFe, etc...) com elementos separados.
Declaration
public static XMLUtility.ConteudoChaveDFe ExtrairConteudoChaveDFe(string chave)
Parameters
Type | Name | Description |
---|---|---|
System.String | chave | Chave do DFe para extrair o conteúdo |
Returns
Type | Description |
---|---|
XMLUtility.ConteudoChaveDFe | Estrutura contendo o valor de cada elemento que compõe a chave do DFe |
Examples
var conteudo = XMLUtility.ExtrairConteudoChaveDFe("41210212345678000112650110000000069123456787");
Console.WriteLine(conteudo.UFEmissor); //Output: PR Console.WriteLine(conteudo.AnoEmissao); //Output: 21 Console.WriteLine(conteudo.MesEmissao); //Output: 02 Console.WriteLine(conteudo.CNPJCPFEmissor); //Output: 12345678000112 Console.WriteLine(conteudo.Modelo); //Output: NFCe Console.WriteLine(conteudo.Serie); //Output: 11 Console.WriteLine(conteudo.NumeroDoctoFiscal); //Output: 6 Console.WriteLine(conteudo.TipoEmissao); //Output: ContingenciaOffLine Console.WriteLine(conteudo.CodigoNumerico); //Output: 12345678 Console.WriteLine(conteudo.DigitoVerificador); //Output: 7
ExtrairLinhaColuna(String)
Extrair a linha e coluna da string da exceção referente a problema de desserialização do XML
Declaration
static int[] ExtrairLinhaColuna(string input)
Parameters
Type | Name | Description |
---|---|---|
System.String | input | mensagem de exceção para analisar e extrair o conteúdo |
Returns
Type | Description |
---|---|
System.Int32[] |
ExtrairParteXMLComFalha(String, Int32, Boolean)
Extrair do XML a parte que gerou a exceção para retornar uma mensagem mais clara para o ERP.
Declaration
static string ExtrairParteXMLComFalha(string xml, int linePosition, bool voltarUmaTag = false)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML |
System.Int32 | linePosition | Posição da linha do XML que gerou a exceção |
System.Boolean | voltarUmaTag |
Returns
Type | Description |
---|---|
System.String |
GerarCodigoNumerico(Int32)
Gera um número randômico para ser utilizado no Código Numérico da NFe, NFCe, CTe, MDFe, etc...
Declaration
public static int GerarCodigoNumerico(int numeroNF)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | numeroNF | Número da NF, CT ou MDF |
Returns
Type | Description |
---|---|
System.Int32 | Código numérico |
GetChaveDFe(String)
Busca o número da chave do Documento Fiscal Eletrônico no XML do Documento Fiscal Eletrônico
Declaration
public static string GetChaveDFe(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML para busca da chave |
Returns
Type | Description |
---|---|
System.String | Chave do DFe (Documento Fiscal Eletrônico = NFe, NFCe, CTe, etc...) |
GetChaveDFe(String, TipoDFe)
Busca o número da chave do Documento Fiscal Eletrônico no XML do Documento Fiscal Eletrônico
Declaration
public static string GetChaveDFe(string xml, TipoDFe typeDFe)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML para busca da chave |
TipoDFe | typeDFe | Tipo do DFe |
Returns
Type | Description |
---|---|
System.String | Chave do DFe (Documento Fiscal Eletrônico = NFe, NFCe, CTe, etc...) |
GetChaveEventoCTe(String)
Busca o número da chave do evento do CT-e
Declaration
public static string GetChaveEventoCTe(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML para busca da chave |
Returns
Type | Description |
---|---|
System.String | Chave do evento do CT-e |
GetChaveEventoCTe(String, TipoEventoCTe)
Busca o número da chave do evento do CT-e
Declaration
public static string GetChaveEventoCTe(string xml, TipoEventoCTe typeEventoCTe)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML para busca da chave |
TipoEventoCTe | typeEventoCTe | Tipo de evento do CTe |
Returns
Type | Description |
---|---|
System.String | Chave do evento do CT-e |
GetChaveEventoMDFe(String)
Busca o número da chave do evento do MDF-e
Declaration
public static string GetChaveEventoMDFe(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML para busca da chave |
Returns
Type | Description |
---|---|
System.String | Chave do evento do MDF-e |
GetChaveEventoMDFe(String, TipoEventoMDFe)
Busca o número da chave do evento do MDF-e
Declaration
public static string GetChaveEventoMDFe(string xml, TipoEventoMDFe typeEventoMDFe)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML para busca da chave |
TipoEventoMDFe | typeEventoMDFe | Tipo do evento do MDFe |
Returns
Type | Description |
---|---|
System.String | Chave do evento do MDF-e |
GetChaveEventoNFe(String)
Busca o número da chave do Documento Fiscal Eletrônico no XML do Documento Fiscal Eletrônico
Declaration
public static string GetChaveEventoNFe(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML para busca da chave |
Returns
Type | Description |
---|---|
System.String | Chave do DFe (Documento Fiscal Eletrônico = NFe, NFCe, CTe, etc...) |
GetChaveEventoNFe(String, TipoEventoNFe)
Busca o número da chave do Documento Fiscal Eletrônico no XML do Documento Fiscal Eletrônico
Declaration
public static string GetChaveEventoNFe(string xml, TipoEventoNFe typeEventoDFe)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML para busca da chave |
TipoEventoNFe | typeEventoDFe | Tipo do Evento DFe |
Returns
Type | Description |
---|---|
System.String | Chave do evento do DFe (Documento Fiscal Eletrônico = NFe, NFCe, CTe, etc...) |
ImproveInvalidCharacterExceptionInXML(String, XmlException)
Melhorar a mensagem de exceção quando é um erro de caracteres inválidos no XML
Declaration
public static void ImproveInvalidCharacterExceptionInXML(string xml, XmlException ex)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | Conteúdo do XML |
System.Xml.XmlException | ex | Exceção gerada inicialmente |
MontarChaveCTe(ref XMLUtility.ConteudoChaveDFe)
Monta a chave do CTe com base nos valores informados
Declaration
public static string MontarChaveCTe(ref XMLUtility.ConteudoChaveDFe conteudoChaveDFe)
Parameters
Type | Name | Description |
---|---|---|
XMLUtility.ConteudoChaveDFe | conteudoChaveDFe | Conteúdos do CTe necessários para montagem da chave |
Returns
Type | Description |
---|---|
System.String | Chave do CTe |
MontarChaveDFe(UFBrasil, DateTime, String, ModeloDFe, Int32, Int32, TipoEmissao, String)
Gerar a chave dos seguintes documentos fiscais eletrônicos: NFe, NFCe, CTe, MFDe e CTeOS.
Declaration
public static string MontarChaveDFe(UFBrasil cUF, DateTime dhEmi, string cnpjcpf, ModeloDFe mod, int serie, int nNF, TipoEmissao tpEmis, string cNF = "")
Parameters
Type | Name | Description |
---|---|---|
UFBrasil | cUF | UF do emitente |
System.DateTime | dhEmi | Data de emissão do documento |
System.String | cnpjcpf | CNPJ ou CPF do emitente |
ModeloDFe | mod | Código do modelo do documento fiscal eletrônicos |
System.Int32 | serie | Série do documento fiscal eletrônico |
System.Int32 | nNF | Número da nota fiscal |
TipoEmissao | tpEmis | Tipo de emissão (Tag tpEmis) |
System.String | cNF | Código numérico randômico (Deixe em branco ou nulo para que a DLL gera este código para você) |
Returns
Type | Description |
---|---|
System.String | Retorna a chave, completa, do documento fiscal eletrônico com o dígito verificar calculado e concatenado a chave |
MontarChaveDFe(ref XMLUtility.ConteudoChaveDFe)
Monta a chave do DFE com base nos valores informados
Declaration
static string MontarChaveDFe(ref XMLUtility.ConteudoChaveDFe conteudoChaveDFe)
Parameters
Type | Name | Description |
---|---|---|
XMLUtility.ConteudoChaveDFe | conteudoChaveDFe | Conteúdos do DFe necessários para montagem da chave |
Returns
Type | Description |
---|---|
System.String | Chave do DFe |
MontarChaveMDFe(ref XMLUtility.ConteudoChaveDFe)
Monta a chave do MDFe com base nos valores informados
Declaration
public static string MontarChaveMDFe(ref XMLUtility.ConteudoChaveDFe conteudoChaveDFe)
Parameters
Type | Name | Description |
---|---|---|
XMLUtility.ConteudoChaveDFe | conteudoChaveDFe | Conteúdos do MDFe necessários para montagem da chave |
Returns
Type | Description |
---|---|
System.String | Chave do MDFe |
MontarChaveNFe(ref XMLUtility.ConteudoChaveDFe)
Monta a chave da NFe com base nos valores informados
Declaration
public static string MontarChaveNFe(ref XMLUtility.ConteudoChaveDFe conteudoChaveDFe)
Parameters
Type | Name | Description |
---|---|---|
XMLUtility.ConteudoChaveDFe | conteudoChaveDFe | Conteúdos da NFe necessários para montagem da chave |
Returns
Type | Description |
---|---|
System.String | Chave da NFe |
Serializar(Object, List<XMLUtility.TNameSpace>)
Serializar o objeto (Converte o objeto para XML)
Declaration
public static XmlDocument Serializar(object objeto, List<XMLUtility.TNameSpace> namespaces = null)
Parameters
Type | Name | Description |
---|---|---|
System.Object | objeto | Objeto a ser serializado |
System.Collections.Generic.List<XMLUtility.TNameSpace> | namespaces | Namespaces a serem adicionados no XML |
Returns
Type | Description |
---|---|
System.Xml.XmlDocument | XML |
Serializar(Object, XmlRootAttribute, List<XMLUtility.TNameSpace>)
Declaration
public static XmlDocument Serializar(object obj, XmlRootAttribute xmlRootAttribute, List<XMLUtility.TNameSpace> namespaces = null)
Parameters
Type | Name | Description |
---|---|---|
System.Object | obj | |
System.Xml.Serialization.XmlRootAttribute | xmlRootAttribute | |
System.Collections.Generic.List<XMLUtility.TNameSpace> | namespaces |
Returns
Type | Description |
---|---|
System.Xml.XmlDocument |
Exceptions
Type | Condition |
---|---|
System.ArgumentNullException |
Serializar<T>(T, List<XMLUtility.TNameSpace>)
Serializar o objeto (Converte o objeto para XML)
Declaration
public static XmlDocument Serializar<T>(T objeto, List<XMLUtility.TNameSpace> namespaces = null)
where T : new()
Parameters
Type | Name | Description |
---|---|---|
T | objeto | Objeto a ser serializado |
System.Collections.Generic.List<XMLUtility.TNameSpace> | namespaces | Namespaces a serem adicionados no XML |
Returns
Type | Description |
---|---|
System.Xml.XmlDocument | XML |
Type Parameters
Name | Description |
---|---|
T | Tipo do objeto |
Serialize<T>(T, XmlRootAttribute, List<(String Namespace, String Prefix)>)
Declaration
static XmlDocument Serialize<T>(T obj, XmlRootAttribute xmlRootAttribute, List<(string Namespace, string Prefix)> namespaces = null)
Parameters
Type | Name | Description |
---|---|---|
T | obj | |
System.Xml.Serialization.XmlRootAttribute | xmlRootAttribute | |
System.Collections.Generic.List<System.ValueTuple<System.String, System.String>> | namespaces |
Returns
Type | Description |
---|---|
System.Xml.XmlDocument |
Type Parameters
Name | Description |
---|---|
T |
Exceptions
Type | Condition |
---|---|
System.ArgumentNullException |
TagExist(XmlElement, String)
Busca o nome de uma determinada TAG em um Elemento do XML para ver se existe, se existir retorna seu conteúdo da TAG.
Declaration
public static bool TagExist(XmlElement xmlElement, string tagName)
Parameters
Type | Name | Description |
---|---|---|
System.Xml.XmlElement | xmlElement | Elemento do XML onde será pesquisado o Nome da TAG |
System.String | tagName | Nome da Tag que será pesquisado |
Returns
Type | Description |
---|---|
System.Boolean | Conteúdo da tag |
TagRead(XmlElement, String)
Busca o nome de uma determinada TAG em um Elemento do XML para ver se existe, se existir retorna seu conteúdo da TAG.
Declaration
public static string TagRead(XmlElement xmlElement, string tagName)
Parameters
Type | Name | Description |
---|---|---|
System.Xml.XmlElement | xmlElement | Elemento do XML onde será pesquisado o Nome da TAG |
System.String | tagName | Nome da Tag que será pesquisado |
Returns
Type | Description |
---|---|
System.String | Conteúdo da tag |
TratarFalhaXML(String)
Tratar erros no XML antes de desserializar para evitar erro na desserialização
Declaration
static string TratarFalhaXML(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml | String do XML que deve sofrer a correção |
Returns
Type | Description |
---|---|
System.String | XML já corrigido |
UnescapeReservedCharacters(String)
Tratar caracteres especiais existentes na string substituindo por escape. Caracteres substituídos: & < > \ ' Escapes utilizados: & < > " '
Declaration
public static string UnescapeReservedCharacters(string content)
Parameters
Type | Name | Description |
---|---|---|
System.String | content | String a ser tratada |
Returns
Type | Description |
---|---|
System.String | string com os caracteres especiais substituídos pelos seus escapes |
Examples
var texto = "Dias \ Dias"; texto = XMLUtility.TratarCaracterEspecial(texto); MessageBox.Show(texto); // Retorno será: "Dias " Dias"
See Also
Validate(String)
Declaration
static bool Validate(string xml)
Parameters
Type | Name | Description |
---|---|---|
System.String | xml |
Returns
Type | Description |
---|---|
System.Boolean |