Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KhaosDoctor

Ler tags de um arquivo XML

Recommended Posts

Pessoal, estou com um problema em um web application que estou trabalhando no ASP.NET com VB.

 

Eis que o usuário faz um upload de um modelo XML para o servidor, até ai tudo bem, porém quando vou usar o XMLDocument para poder abrir o arquivo e depois ler todas as tags que preciso ele dá um erro: "Referência de objeto não definida para instancia de objeto".

 

Porém já usei o new e também já defini todos os objetos novos, e não sei qual é o problema, já me disseram que é devido ao fato de que a tag solicitada não está sendo encontrada, mas ela está lá, já tentei colocar nodo a nodo do xml, também já tentei por Root e mesmo assim ele não encontra ou não funciona.

 

A linha que dá erro é esta:

[inline]Dim numeroNF As Integer = Convert.ToInt32(oXML.SelectSingleNode("nfeProc").ChildNodes(0).ChildNodes(0).ChildNodes(0).ChildNodes(6).InnerText)[/inline]

 

Este é o bloco completo:

 

 

 Dim oXML As System.Xml.XmlDocument = New System.Xml.XmlDocument
                    oXML.Load(path)


 Dim numeroNF As Integer = Convert.ToInt32(oXML.SelectSingleNode("nfeProc").ChildNodes(0).ChildNodes(0).ChildNodes(0).ChildNodes(6).InnerText)
                    Dim serieNF As String = oXML.SelectSingleNode("nfeProc").ChildNodes(0).ChildNodes(0).ChildNodes(0).ChildNodes(6).InnerText
                    Dim dataemisNF As String = oXML.SelectSingleNode("ide").ChildNodes(7).InnerText
                    Dim cnpjemis As Integer = Convert.ToInt32(oXML.SelectSingleNode("emit").ChildNodes(0).InnerText)
                    Dim emissor As String = oXML.SelectSingleNode("emit").ChildNodes(1).InnerText
                    Dim cpfdest As Integer = Convert.ToInt32(oXML.SelectSingleNode("dest").ChildNodes(0).InnerText)
                    Dim destinatario As String = oXML.SelectSingleNode("dest").ChildNodes(1).InnerText
                    Dim valorNF As Double = Convert.ToDouble(oXML.SelectSingleNode("total").ChildNodes(0).ChildNodes(13).InnerText)

Como vocês podem ver, há duas maneiras que estou buscando, porém ele não chega a passar da primeira linha.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os primeiros campos são assim:

 

 

 

<?xml version="1.0" encoding="UTF-8"?>


<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versao="2.00">


<NFe xmlns="http://www.portalfiscal.inf.br/nfe">


<infNFe Id="NFe35120760894136001609550030000359531000359532" versao="2.00">


<ide>


<cUF>35</cUF>
<cNF>00035953</cNF>
<natOp>#</natOp>
<indPag>0</indPag>
<mod>55</mod>
<serie>#</serie>
<nNF>#</nNF>
<dEmi>2012-07-11</dEmi>
<tpNF>1</tpNF>
<cMunFG>3548708</cMunFG>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV>2</cDV>
<tpAmb>1</tpAmb>
<finNFe>1</finNFe>
<procEmi>0</procEmi>
<verProc>2.6.1.1</verProc>


</ide>

Quero pegar o campo nNF e serie

Compartilhar este post


Link para o post
Compartilhar em outros sites


Dim oXML As System.Xml.XmlDocument = New System.Xml.XmlDocument

Dim ns As System.Xml.XmlNamespaceManager = New System.Xml.XmlNamespaceManager(oXML.NameTable)

Dim NodeRoot As System.Xml.XmlNode

 

ns.AddNamespace("nfe", "http://www.portalfiscal.inf.br/nfe")

oXML.Load(arquivo)

 

 

NodeRoot = oXML.SelectSingleNode("nfe:nfeProc/nfe:NFe/nfe:infNFe/nfe:ide", ns)

 

Dim numeroNF As Integer = Convert.ToInt32(NodeRoot.ChildNodes(6).InnerText)

Dim serieNF As String = NodeRoot.ChildNodes(5).InnerText

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.