FONTE NFE VB.NET
OS ARQUIVOS FORAM SALVOS NO FORMATO TEXTO PARA ENVIAR AO SITE, é SÓ SALVAR COMO XML
Citação::
Pessoal,
Como posso fazer para saber se determinada TAG existe em um Node (ChildNodes) do XML atraves de um nome.
Exemplo :
Preciso saber se na TAG imposto tem o NÓ pMAVAST.
Detalhamento.Imposto.Icms.Icms10.pMVAST = IsNothing(InnerNode4.ChildNodes(0).ChildNodes(11).InnerText
Acontece que nem sempre ele(o nó pMVAST) será passado no xml, o que ocorre erro de referencia, pois não existe.
Outra coisa :
Como poderia pegar o valor desse nó através do nome ???
P.S. Daniel, show de bolo o projeto, deverÃamos colocá-lo no codeplex, como vc mesmo cogitou.
Estava pensando em uma forma de DINAMIZAR a leitura dos dados para a impressão do DANFE tendo como referência o nome da TAG.
Você já em algo dessa forma ?
eu faço assim para dinamizar
Try
Dim AbreNFeXmldet_imposto = AbreNFeXmldet.DataSet.Tables([Ô]imposto[Ô]).Rows(bus)
Try
Dim AbreNFeXmldet_imposto_ICMS = AbreNFeXmldet_imposto.Table.DataSet.Tables([Ô]icms[Ô]).Rows(0)
Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS00[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS10[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS20[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS30[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS40[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS51[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS60[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS70[Ô]).Rows(bus)
Catch ex As Exception
End Try
[ô]Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS00[Ô]).Rows(bus)
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS30[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS40[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS51[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS60[Ô]).Rows(bus)
Catch ex As Exception
End Try
Try
Imposto_ICMSICMS00 = AbreNFeXmldet_imposto_ICMS.Table.DataSet.Tables([Ô]ICMS70[Ô]).Rows(bus)
Catch ex As Exception
End Try
Dim CSTV
Try
Try
CSTV = (Imposto_ICMSICMS00.Item([Ô]orig[Ô])) [ô]
Catch ex As Exception
CSTV = [Ô]0[Ô]
End Try
Try
CSTV = CSTV & (Imposto_ICMSICMS00.Item([Ô]CST[Ô])) [ô]
Catch ex As Exception
CSTV = CSTV & [Ô]00[Ô]
End Try
Catch ex As Exception
CSTV = [Ô]000[Ô]
End Try
PROD.DCST = CSTV
Try
PROD.DBCALC_ICMS = Formatox(Imposto_ICMSICMS00.Item([Ô]vBC[Ô]), [Ô]moeda[Ô]) [ô]
Catch ex As Exception
PROD.DBCALC_ICMS = [Ô]0,00[Ô]
End Try
Try
PROD.DVALORICMS = Formatox(Imposto_ICMSICMS00.Item([Ô]vICMS[Ô]), [Ô]moeda[Ô]) [ô]
Catch ex As Exception
PROD.DVALORICMS = [Ô]0,00[Ô]
End Try
Try
PROD.DBCALC_ICMS_ST = Formatox(Imposto_ICMSICMS00.Item([Ô]vBCST[Ô]), [Ô]moeda[Ô]) [ô]
Catch ex As Exception
PROD.DBCALC_ICMS_ST = [Ô]0,00[Ô]
End Try
Try
PROD.DVALORICMS_ST = Formatox(Imposto_ICMSICMS00.Item([Ô]vICMSST[Ô]), [Ô]moeda[Ô]) [ô]
Catch ex As Exception
PROD.DVALORICMS_ST = [Ô]0,00[Ô]
End Try
Try
PROD.DBCALC_ICMS_ST = Imposto_ICMSICMS00.Item([Ô]vBCST[Ô]) [ô]
Catch ex As Exception
End Try
Try
PROD.DVALORICMS_ST = Formatox(Imposto_ICMSICMS00.Item([Ô]vICMSST[Ô]), [Ô]moeda[Ô]) [ô]
Catch ex As Exception
PROD.DVALORICMS_ST = [Ô]0,00[Ô]
End Try
Try
PROD.DALIQUOTAICMS = Formatox(Imposto_ICMSICMS00.Item([Ô]pICMS[Ô]), [Ô]imposto[Ô]) [ô]
Catch ex As Exception
PROD.DALIQUOTAICMS = [Ô]0[Ô]
End Try
Catch ex As Exception
MsgBox(ex)
End Try
Catch ex As Exception
End Try
Try
Imposto_ipi = AbreNFeXmldet_imposto.Table.DataSet.Tables([Ô]ipi[Ô]).Rows(0)
Imposto_ipiIPITrib = Imposto_ipi.Table.DataSet.Tables([Ô]IPITrib[Ô]).Rows(bus)
Try
PROD.DVALORIPI = Formatox(Imposto_ipiIPITrib.Item([Ô]vIPI[Ô]), [Ô]moeda[Ô])
Catch ex As Exception
PROD.DVALORIPI = [Ô]0,00[Ô]
End Try
Try
PROD.DALIQUOTAIPI = Formatox(Imposto_ipiIPITrib.item([Ô]pIPI[Ô]), [Ô]imposto[Ô])
Catch ex As Exception
PROD.DALIQUOTAIPI = [Ô]0[Ô]
End Try
Catch ex As Exception
PROD.DVALORIPI = [Ô]0,00[Ô]
PROD.DALIQUOTAIPI = [Ô]0[Ô]
End Try
Catch ex As Exception
End Try
IDanfe.AddProdutosDanfe.Add(PROD)
Catch ex As Exception
End Try
abç
Pode-se jogar num laço o código abaixo passando como parametro o nome da tag.
exemplo
[ô]Adicionando a TAG ao NAMESPACE do xmlNamespacesMananger
Dim nsProtocolo As New XmlNamespaceManager(xmlProtocolo.NameTable)
nsProtocolo.AddNamespace([Ô]nfe[Ô], [Ô]http://www.portalfiscal.inf.br/nfe[Ô])
Dim xpathNavProtocolo As XPathNavigator = xmlProtocolo.CreateNavigator()
Dim nsNFE As New XmlNamespaceManager(xmlNFE.NameTable)
nsNFE.AddNamespace([Ô]nfe[Ô], [Ô]http://www.portalfiscal.inf.br/nfe[Ô])
Dim xpathNavNFE As XPathNavigator = xmlNFE.CreateNavigator()
[ô] selecionando a TAG NFE
Dim nodeNFE As XPathNavigator = xpathNavNFE.SelectSingleNode([Ô]//nfe:NFe[Ô], nsNFE)
Dim TagNFEn As String = nodeNFE.GetAttribute([Ô]NFe[Ô], [Ô][Ô])
[ô] selecionando a TAG protNFE
Dim nodeProtocolo As XPathNavigator = xpathNavProtocolo.SelectSingleNode([Ô]//nfe:protNFe[Ô], nsProtocolo)
Dim TagProtocolon As String = nodeProtocolo.GetAttribute([Ô]protNFe[Ô], [Ô][Ô])
[ô]Declarando os pathNavegator
Dim TAGNFe, TAGprotNFE As XPathNavigator
[ô]Atribuindo a TAG selecionada ao PathNavegator
TAGNFe = xpathNavNFE.SelectSingleNode([Ô]//nfe:NFe[Ô], nsNFE)
TAGprotNFE = xpathNavProtocolo.SelectSingleNode([Ô]//nfe:protNFe[Ô], nsProtocolo)
Muito dinamico isso ae, eh soh adptar
Utilizando o seu desenvolvimento, com os seus dados, ele dá erro de UF diferente do certificado (até aÃ, beleza porque vc está no RS e eu em SP).
Alterei as urls de recepcao e retorno para SP e utilizei os meus dados de SP.
Deu o seguinte erro nessa linha dentro da classe C_WebService, e da função ConsultaRecLote:
If InnerNode.Name = [Ô]infProt[Ô] Then
[ô]PEGA A VARIAVEL ID QUE é UM ATRIBUTO E NAO UM ITEM
VarRecibo.Id = InnerNode.Attributes.ItemOf([Ô]Id[Ô]).InnerText <-------- erro
erro: Object reference not set to an instance of an object
O que pode ser isso?
Abraço.
Ricardo
Citação::
Daniel,
Utilizando o seu desenvolvimento, com os seus dados, ele dá erro de UF diferente do certificado (até aÃ, beleza porque vc está no RS e eu em SP).
Alterei as urls de recepcao e retorno para SP e utilizei os meus dados de SP.
Deu o seguinte erro nessa linha dentro da classe C_WebService, e da função ConsultaRecLote:
If InnerNode.Name = [Ô]infProt[Ô] Then
[ô]PEGA A VARIAVEL ID QUE é UM ATRIBUTO E NAO UM ITEM
VarRecibo.Id = InnerNode.Attributes.ItemOf([Ô]Id[Ô]).InnerText <-------- erro
erro: Object reference not set to an instance of an object
O que pode ser isso?
Abraço.
Ricardo
Rapaz tive o mesmo erro, e observei que o retorno naum possuia esse elemento,
Eu comentei a linha e deixar passar.
Tente ae.
Citação::
Bom galera conforme prometi segue projeto publicado no codeplex http://nfevbnet.codeplex.com aguardo vocês para elegermos os colaboradores do projeto.
é soh me add lah
meu usuario 'e Admilson
Eu para colaborar prometo passar para a versão 2.0 até o final deste mês e melhorar a rotina de leitura que conto com a ajuda de algum colega para identificarmos a melhor forma.
FOXMAN lhe adicionei aguardo outros colegas para ajudarem no projeto.