WEBSERVICE E XML

CLEVERTON 18/08/2012 23:34:56
#408140
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.

  
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
CLEVERTON 18/08/2012 23:43:04
#408141
Completando, se eu chamar

msgbox obj.responseText


o XML tá bonitinho. mas a classe
 objLerXml.selectNodes([Ô]//webservicecep[Ô])


não consegue absorver o Node

o que pode ser isto ?
FOXMAN 19/08/2012 14:23:09
#408156
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.

CLEVERTON 19/08/2012 20:47:18
#408168
mas dá erro ao tentar acessar

objLerXml.selectSingleNode([Ô]//resultado[Ô])
CLEVERTON 26/08/2012 23:23:00
#408694
alguém ?
CLEVERTON 01/09/2012 11:16:34
#409038
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á.

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
CLEVERTON 01/09/2012 11:17:17
#409039
Aqui tem um TUTO bem detalhadinho

http://www.macoratti.net/xml_vb.htm
Tópico encerrado , respostas não são mais permitidas