LER XML COM MASCARA E SOMENTE ALGUNS DADOS DA NFE

EREZENDE15 12/03/2013 08:39:54
#420298
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.

ANTONIOBSJ 12/03/2013 10:46:35
#420301
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?
EREZENDE15 12/03/2013 11:33:44
#420305
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.
ADHEL 12/03/2013 15:23:00
#420316
Resposta escolhida
Veja esse exemplo
EREZENDE15 13/03/2013 08:22:06
#420356
Funcionou, muito obrigado amigos pela ajuda.
Tópico encerrado , respostas não são mais permitidas