LER XML NFSE

DARCIOAS 07/11/2025 09:55:11
#505151
Olá pessoal, bom dia!

Tenho um problema que é com a leitura de um arquivo de retorno NFSe padrão GINFES.




N?o existe libera??o v?lida para o n?mero de Nota Fiscal informado





N?o existe libera??o v?lida para o n?mero de Nota Fiscal informado




Usando a versão do Microsoft XML, v6.0 ele não lê a tag que preciso, que é a tag da mensagem (ns2:Mensagem)

Se eu troco a versão pra Microsoft XML, v3.0 ele já faz a leitura corretamente. Não sei oq muda entre uma versão e outra que faz com que dê erro em uma e certo na outra. Não sei se tenho que trocar a forma de fazer a leitura quando uso a versão 6.0

Private Function retornaTagXML(strXML As String, TagMae As String, SubTag As String) As String
On Error Resume Next

retornaTagXML = ""
Dim XML As DOMDocument60, objNode As IXMLDOMNode, objNodeList As IXMLDOMNodeList
Set XML = New DOMDocument60
XML.async = False
strXML = "C:\Administrador Eletrônico\NFSe\57570213\Retornos
fse-1-res-loterps-.xml"
If XML.loadXML(strXML) Then
' *** Tentar pegar o strCampoXML
Set objNodeList = XML.getElementsByTagName(TagMae & "//" & SubTag)
Set objNode = objNodeList.nextNode
Dim sLeitura As String
sLeitura = objNode.Text
If Len(Trim(sLeitura)) > 0 Then 'CONSEGUI LER O XML NODE
retornaTagXML = sLeitura
End If
Else
MsgBox "Não foi possível abrir o arquivo XML da NFSe especificada para Leitura.", vbCritical, "Erro"
End If
End Function

essa é a função que uso pra fazer a leitura do arquivo XML. Essa é a que da o erro com a versão 6.0 do Microsoft XML DOM

Outra coisa que queria resolver é como converter esses caracteres especiais no arquivo de retorno em caracteres normais e legíveis
N?o existe libera??o v?lida para o n?mero de Nota Fiscal informado

Desde já grato pela atenção de todos!

Dárcio Assis
DARCIOAS 07/11/2025 14:13:19
#505152
Já consegui resolver... só declarar como tipo "Object"

Ao invés de declarar
Dim XML As DOMDocument60
Set XML = New DOMDocument60

é só eu declarar
Dim XMLDoc As Object
Set XMLDoc = CreateObject("Microsoft.XMLDOM")

Assim pode estar instanciado qq versão do DOM XML, pode ser o 3.0, 4.0, 5.0 ou 6.0 que funciona e faz a leitura sem erro.

É pq eu precisava instanciar a versão 6.0, que a que não estava fazendo a leitura correta do XML. E eu precisava dela pq essa versão é que conseguia gravar o XML de retorno que vem da GINFES no padrão ISO-8859-1
Tópico encerrado , respostas não são mais permitidas