WEBSERVICE E XML
Olá pessoal, a muuuuuito tempo não posto nada aqui ^^
e agora tou precisando de uma ajudinha de vcs. Olha eu estou puxando uma XML de uma Webservice da seguinte forma.
Olha, quando a URL está com o CEP: 91010000 ele lê perfeitamente e as informações vem todas completas
http://cep.republicavirtual.com.br/web_cep.php?cep=91010000&formato=xml
mas quando o CEP: 48700000 é único não me traz informação alguma, queria ver com alguma pessoa que mexe mais com XML se poderia me dar uma luz.
http://cep.republicavirtual.com.br/web_cep.php?cep=48700000&formato=xml
e agora tou precisando de uma ajudinha de vcs. Olha eu estou puxando uma XML de uma Webservice da seguinte forma.
On Error GoTo ReadError
Dim obj As MSXML2.ServerXMLHTTP
Dim objLerXml As MSXML2.DOMDocument
Set obj = New MSXML2.ServerXMLHTTP
Set objLerXml = New MSXML2.DOMDocument
Dim RET As IXMLDOMNodeList
Dim Fields(5) As IXMLDOMNode
[ô]URL da webservice 91010000
URL = [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=48700000&formato=xml[Ô]
obj.open [Ô]GET[Ô], URL
obj.send
objLerXml.loadXML (obj.responseText)
Set RET = objLerXml.selectNodes([Ô]//webservicecep[Ô])
[ô]se encontrar child filho
If objLerXml.hasChildNodes = True Then
Set Fields(0) = objLerXml.selectSingleNode([Ô]//uf[Ô])
Set Fields(1) = objLerXml.selectSingleNode([Ô]//cidade[Ô])
Set Fields(2) = objLerXml.selectSingleNode([Ô]//bairro[Ô])
Set Fields(3) = objLerXml.selectSingleNode([Ô]//tipo_logradouro[Ô])
Set Fields(4) = objLerXml.selectSingleNode([Ô]//logradouro[Ô])
Set Fields(5) = objLerXml.selectSingleNode([Ô]//resultado[Ô])
txtResultados.Text = Fields(0).Text & vbNewLine & Fields(1).Text & vbNewLine & Fields(2).Text & vbNewLine & Fields(3).Text & vbNewLine & Fields(4).Text
Else
MsgBox [Ô]Serviço indisponÃvel ou cep inválido[Ô], vbInformation, [Ô][Ô]
End If
Set obj = Nothing
Set objLerXml = Nothing
Set RET = Nothing
ReadError:
If Err.Number <> 0 Then
MsgBox [Ô]Line: [Ô] & Erl & vbNewLine & [Ô]Error Number: [Ô] & Err.Number & vbNewLine & [Ô]Description: [Ô] & Err.Description, vbExclamation, [Ô]By VBMania.Cleverton[Ô]
End If
Olha, quando a URL está com o CEP: 91010000 ele lê perfeitamente e as informações vem todas completas
http://cep.republicavirtual.com.br/web_cep.php?cep=91010000&formato=xml
mas quando o CEP: 48700000 é único não me traz informação alguma, queria ver com alguma pessoa que mexe mais com XML se poderia me dar uma luz.
http://cep.republicavirtual.com.br/web_cep.php?cep=48700000&formato=xml
Completando, se eu chamar
o XML tá bonitinho. mas a classe
não consegue absorver o Node
o que pode ser isto ?
msgbox obj.responseText
o XML tá bonitinho. mas a classe
objLerXml.selectNodes([Ô]//webservicecep[Ô])
não consegue absorver o Node
o que pode ser isto ?
Vc tem que tratar a Tag : <resultado>1</resultado>
Quando o conteúdo for = 1 é Cep Completo
Quando o conteúdo for = 2 é Cep único.
Tratando isso já resolve seu problema.
Quando o conteúdo for = 1 é Cep Completo
Quando o conteúdo for = 2 é Cep único.
Tratando isso já resolve seu problema.
mas dá erro ao tentar acessar
objLerXml.selectSingleNode([Ô]//resultado[Ô])
objLerXml.selectSingleNode([Ô]//resultado[Ô])
alguém ?
Bom pessoal, tive que fazer uma POG.
não ficou do jeito que eu queria mas tá valendo.
Quando descobri onde era meu problema reabro o tópico.
me parece que esse erro 91 é pq tem que fechar e abrir a classe ou chamar o DOMDocument de uma rotina diferente
Bom, mas tá funcionando, testado já.
não ficou do jeito que eu queria mas tá valendo.
Quando descobri onde era meu problema reabro o tópico.
me parece que esse erro 91 é pq tem que fechar e abrir a classe ou chamar o DOMDocument de uma rotina diferente
Bom, mas tá funcionando, testado já.
Private Sub cmdAcharCep_Click()
Dim obj As MSXML2.ServerXMLHTTP
Set obj = New MSXML2.ServerXMLHTTP
obj.open [Ô]GET[Ô], [Ô]http://cep.republicavirtual.com.br/web_cep.php?cep=[Ô] & txtCEP.Text & [Ô]&formato=xml[Ô]
obj.send
Open [Ô]C:
ewFileXML.xml[Ô] For Output As #1
Print #1, obj.responseText
Close #1
MsgBox [Ô]Pronto ![Ô], vbInformation, [Ô]XML[Ô]
MostraDados ([Ô]C:
ewFileXML.xml[Ô])
End Sub
Private Sub MostraDados(sPath As String)
Dim doc As DOMDocument, Temp(3) As String
Set doc = New DOMDocument
doc.Load sPath
Temp(0) = doc.documentElement.childNodes(0).childNodes(0).Text
Temp(1) = doc.documentElement.childNodes(1).childNodes(0).Text
Temp(2) = doc.documentElement.childNodes(2).childNodes(0).Text
MsgBox [Ô]<resultado> [Ô] & Temp(0) & vbCrLf & _
[Ô]<resultado_txt> [Ô] & Temp(1) & vbCrLf & _
[Ô]<uf> [Ô] & Temp(2) & vbCrLf
MsgBox doc.selectNodes([Ô]//resultado[Ô]).Item(0).nodeName & [Ô]: [Ô] & doc.selectNodes([Ô]//resultado[Ô]).Item(0).Text, vbInformation, [Ô]SelectNodes.Small[Ô]
MsgBox doc.selectNodes([Ô]webservicecep//bairro[Ô]).Item(0).nodeName & [Ô]: [Ô] & doc.selectNodes([Ô]webservicecep//bairro[Ô]).Item(0).Text, vbInformation, [Ô]SelectNodes.Full[Ô]
End Sub
Aqui tem um TUTO bem detalhadinho
http://www.macoratti.net/xml_vb.htm
http://www.macoratti.net/xml_vb.htm
Tópico encerrado , respostas não são mais permitidas