LER XML COM MASCARA E SOMENTE ALGUNS DADOS DA NFE
Olá amigos do fórum, eu criei um leitor de xml no vb.net, porém eu gostaria que ele me trouxesse somente algumas informações de uma NFe como nome , cnpj, etc.., e também gostaria de alguma idéia para colocar uma máscara para informar o que é nome da empresa, cnpj,etc...
Segue o meu código para melhor orientação.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim oXML As New XmlDocument
Dim oNoLista As XmlNodeList
Dim oNo As XmlNode
[ô]Define o caminho do arquivo XML
Dim ArquivoXML As String = txtCaminhoXML.Text
[ô]carrega o arquivo XML
oXML.Load(ArquivoXML)
[ô]Lê o filho de um Nó Pai especÃfico
Dim nomeAluno As String = oXML.SelectSingleNode([Ô]Alunos[Ô]).ChildNodes(0).InnerText
Dim idadeAluno As String = oXML.SelectSingleNode([Ô]Alunos[Ô]).ChildNodes(1).InnerText
Dim emailAluno As String = oXML.SelectSingleNode([Ô]Alunos[Ô]).ChildNodes(2).InnerText
[ô]*** Exibe Dados do aluno
lstDados.Items.Add(nomeAluno)
lstDados.Items.Add(idadeAluno)
lstDados.Items.Add(emailAluno)
[ô] Define o nó para nova leitura
oNoLista = oXML.SelectNodes([Ô]/Alunos[Ô])
[ô]percorre os nós filhos do Nó especificaod e obtem o atributo e os valores
For Each oNo In oNoLista
[ô]lstDados.Items.Add(oNo.Attributes.GetNamedItem([Ô]tipo[Ô]).Value)
lstDados.Items.Add(oNo.ChildNodes.Item(0).InnerText)
lstDados.Items.Add(oNo.ChildNodes.Item(1).InnerText)
lstDados.Items.Add(oNo.ChildNodes.Item(2).InnerText)
lstDados.Items.Add(oNo.ChildNodes.Item(3).InnerText)
lstDados.Items.Add(oNo.ChildNodes.Item(4).InnerText)
Next
End Sub
Desde já agradeço a ajuda de todos, muito obrigado.
Segue o meu código para melhor orientação.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim oXML As New XmlDocument
Dim oNoLista As XmlNodeList
Dim oNo As XmlNode
[ô]Define o caminho do arquivo XML
Dim ArquivoXML As String = txtCaminhoXML.Text
[ô]carrega o arquivo XML
oXML.Load(ArquivoXML)
[ô]Lê o filho de um Nó Pai especÃfico
Dim nomeAluno As String = oXML.SelectSingleNode([Ô]Alunos[Ô]).ChildNodes(0).InnerText
Dim idadeAluno As String = oXML.SelectSingleNode([Ô]Alunos[Ô]).ChildNodes(1).InnerText
Dim emailAluno As String = oXML.SelectSingleNode([Ô]Alunos[Ô]).ChildNodes(2).InnerText
[ô]*** Exibe Dados do aluno
lstDados.Items.Add(nomeAluno)
lstDados.Items.Add(idadeAluno)
lstDados.Items.Add(emailAluno)
[ô] Define o nó para nova leitura
oNoLista = oXML.SelectNodes([Ô]/Alunos[Ô])
[ô]percorre os nós filhos do Nó especificaod e obtem o atributo e os valores
For Each oNo In oNoLista
[ô]lstDados.Items.Add(oNo.Attributes.GetNamedItem([Ô]tipo[Ô]).Value)
lstDados.Items.Add(oNo.ChildNodes.Item(0).InnerText)
lstDados.Items.Add(oNo.ChildNodes.Item(1).InnerText)
lstDados.Items.Add(oNo.ChildNodes.Item(2).InnerText)
lstDados.Items.Add(oNo.ChildNodes.Item(3).InnerText)
lstDados.Items.Add(oNo.ChildNodes.Item(4).InnerText)
Next
End Sub
Desde já agradeço a ajuda de todos, muito obrigado.
EREZENDE15,
Apesar do que parece, XML não é um arquivo texto, de certa forma assemelha-se a um banco de dados. Não foi feito para ser lido no bloco de notas. Então não tem porquê você guardar nada formatado nele. Seja um CNPJ, CPF ou qualquer outra coisa.
O leitor que você fez está bem simples, mas correto. Poderia ser mais especifico na sua dúvida?
Apesar do que parece, XML não é um arquivo texto, de certa forma assemelha-se a um banco de dados. Não foi feito para ser lido no bloco de notas. Então não tem porquê você guardar nada formatado nele. Seja um CNPJ, CPF ou qualquer outra coisa.
O leitor que você fez está bem simples, mas correto. Poderia ser mais especifico na sua dúvida?
Eu mudei o codigo para pegar somente os dados que eu preciso ter como informação.
Este código funciona com algum xml que eu crie, porque eu coloco os nós corretamente, mas a NFe eu não consigo saber qual é o nó pai para tentar puxar o resto
Segue o código abaixo:
Dim objXml As New XmlDocument
Dim CaminhoXml As String = txtCaminhoXML.Text
objXml.Load(CaminhoXml)
Dim cUFAs String = objXml.SelectSingleNode([Ô]ide[Ô]).ChildNodes(0).InnerText
Dim cNFAs String = objXml.SelectSingleNode([Ô]ide[Ô]).ChildNodes(1).InnerText
Dim natOpAs String = objXml.SelectSingleNode([Ô]ide[Ô]).ChildNodes(2).InnerText
lstDados.Items.Add(MedicoNome)
lstDados.Items.Add(MedicoEspec)
lstDados.Items.Add(MedicoCrm)
Segue abaixo um exemplo das NFe que eu tenho que filtrar , digamos assim:
<?xml version=[Ô]1.0[Ô] encoding=[Ô]UTF-8[Ô] ?>
- <nfeProc versao=[Ô]2.00[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
- <NFe xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
- <infNFe Id=[Ô]NFe35121247116298000163550000000019441000180290[Ô] versao=[Ô]2.00[Ô]>
- <ide>
<cUF>35</cUF>
<cNF>00018029</cNF>
<natOp>REMESSA PARA RECARGA</natOp>
<indPag>1</indPag>
<mod>55</mod>
<serie>0</serie>
<nNF>1944</nNF>
<dEmi>2012-12-18</dEmi>
<dSaiEnt>2012-12-18</dSaiEnt>
<hSaiEnt>15:53:51</hSaiEnt>
<tpNF>1</tpNF>
<cMunFG>3550308</cMunFG>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV>0</cDV>
<tpAmb>1</tpAmb>
<finNFe>1</finNFe>
<procEmi>3</procEmi>
<verProc>2.2.4</verProc>
</ide>
- <emit>
Do jeito que está o meu código ele dá o seguinte erro : Object reference not set to an instance of an object.
Não consigo saber qual seria o nó Pai desta NFe, qualquer outro nó para cima do <ide> que eu tente pegar dá o mesmo erro.
Tem algum jeito de dar uma filtrada na NFe, ou não ?
Tipo pegar só alguns dados da nota e mostrar no listbox.
E outra dúvida é, tem como mostrar no meu leitor uma mascara da nota, indicando o que seria cada informação da nota que está aparecendo?
Tipo quando mostrar o cnpj, vir na frente do numero assim:
CNPJ : 47346234000134
Veja se tem como fazer o que eu estou querendo, pois me foi pedido na empresa e agora estou em duvida se realmente tem como fazer isso.
No caso eu queria que aparecesse no meu listbox desta forma:
CNPJ : 47346234000134
NOME: Lustres Projeto
RUA: Edmundo Carvalho
Somente com alguns dados da nota.
Gostaria de saber se tem como fazer isso, se tiver, gostaria de ajuda para o fazer.
Obrigado pela atenção.
Este código funciona com algum xml que eu crie, porque eu coloco os nós corretamente, mas a NFe eu não consigo saber qual é o nó pai para tentar puxar o resto
Segue o código abaixo:
Dim objXml As New XmlDocument
Dim CaminhoXml As String = txtCaminhoXML.Text
objXml.Load(CaminhoXml)
Dim cUFAs String = objXml.SelectSingleNode([Ô]ide[Ô]).ChildNodes(0).InnerText
Dim cNFAs String = objXml.SelectSingleNode([Ô]ide[Ô]).ChildNodes(1).InnerText
Dim natOpAs String = objXml.SelectSingleNode([Ô]ide[Ô]).ChildNodes(2).InnerText
lstDados.Items.Add(MedicoNome)
lstDados.Items.Add(MedicoEspec)
lstDados.Items.Add(MedicoCrm)
Segue abaixo um exemplo das NFe que eu tenho que filtrar , digamos assim:
<?xml version=[Ô]1.0[Ô] encoding=[Ô]UTF-8[Ô] ?>
- <nfeProc versao=[Ô]2.00[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
- <NFe xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
- <infNFe Id=[Ô]NFe35121247116298000163550000000019441000180290[Ô] versao=[Ô]2.00[Ô]>
- <ide>
<cUF>35</cUF>
<cNF>00018029</cNF>
<natOp>REMESSA PARA RECARGA</natOp>
<indPag>1</indPag>
<mod>55</mod>
<serie>0</serie>
<nNF>1944</nNF>
<dEmi>2012-12-18</dEmi>
<dSaiEnt>2012-12-18</dSaiEnt>
<hSaiEnt>15:53:51</hSaiEnt>
<tpNF>1</tpNF>
<cMunFG>3550308</cMunFG>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV>0</cDV>
<tpAmb>1</tpAmb>
<finNFe>1</finNFe>
<procEmi>3</procEmi>
<verProc>2.2.4</verProc>
</ide>
- <emit>
Do jeito que está o meu código ele dá o seguinte erro : Object reference not set to an instance of an object.
Não consigo saber qual seria o nó Pai desta NFe, qualquer outro nó para cima do <ide> que eu tente pegar dá o mesmo erro.
Tem algum jeito de dar uma filtrada na NFe, ou não ?
Tipo pegar só alguns dados da nota e mostrar no listbox.
E outra dúvida é, tem como mostrar no meu leitor uma mascara da nota, indicando o que seria cada informação da nota que está aparecendo?
Tipo quando mostrar o cnpj, vir na frente do numero assim:
CNPJ : 47346234000134
Veja se tem como fazer o que eu estou querendo, pois me foi pedido na empresa e agora estou em duvida se realmente tem como fazer isso.
No caso eu queria que aparecesse no meu listbox desta forma:
CNPJ : 47346234000134
NOME: Lustres Projeto
RUA: Edmundo Carvalho
Somente com alguns dados da nota.
Gostaria de saber se tem como fazer isso, se tiver, gostaria de ajuda para o fazer.
Obrigado pela atenção.
Funcionou, muito obrigado amigos pela ajuda.
Tópico encerrado , respostas não são mais permitidas