Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera, estou com um problema , estou querendo ler um nó especifico do xml e não consigo.
o xml é esse
<?xml version="1.0" encoding="UTF-8" ?>
- <kml xmlns="http://earth.google.com/kml/2.0">
- <Response>
<name>Rua Jordão, 510 - tanque - Rio de Janeiro</name>
- <Status>
<code>200</code>
<request>geocode</request>
</Status>
- <Placemark id="p1">
<address>R. Jordão, 510 - Tanque, Rio de Janeiro - RJ, 22725-549, Brasil</address>
- <AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
- <Country>
<CountryNameCode>BR</CountryNameCode>
<CountryName>Brasil</CountryName>
- <AdministrativeArea>
<AdministrativeAreaName>RJ</AdministrativeAreaName>
- <Locality>
<LocalityName>Rio de Janeiro</LocalityName>
- <DependentLocality>
<DependentLocalityName>Tanque</DependentLocalityName>
- <Thoroughfare>
<ThoroughfareName>R. Jordão, 510</ThoroughfareName>
</Thoroughfare>
- <PostalCode>
<PostalCodeNumber>22725-549</PostalCodeNumber>
</PostalCode>
</DependentLocality>
</Locality>
</AdministrativeArea>
</Country>
</AddressDetails>
- <ExtendedData>
<LatLonBox north="-22.9080001" south="-22.9142953" east="-43.3691175" west="-43.3754127" />
</ExtendedData>
- <Point>
<coordinates>-43.3722567,-22.9111522,0</coordinates>
</Point>
</Placemark>
</Response>
</kml>
Quero ler apenas isso
<coordinates>-43.3722567,-22.9111522,0</coordinates>
meu codigo esta assim
<%
'Instancia o objeto HttpRequest.
Set objSrvHTTP = Server.CreateObject("MSXML2.XMLHTTP.3.0")
slink = " http://maps.google.com/maps/geo?output=xml&q=Rua%20Jord%C3%A3o,%20510%20-%20tanque%20-%20Rio%20de%20Janeiro "
'Informe o método e a URL a ser capturada
objSrvHTTP.open "GET", slink, false
'Com o método setRequestHeader informamos o cabeçalho HTTP
objSrvHTTP.setRequestHeader "Content-Type", "text/xml"
'O método Send envia a solicitação HTTP e exibe o conteúdo da página
objSrvHTTP.Send()
'Amazenamos o resultado na variável strXML
strXML = objSrvHTTP.ResponseXML.xml
'Instancia o objeto XMLDOM
Set objXML = Server.CreateObject("MSXML2.DOMDocument.4.0")
'Indicamos que o download em segundo plano não é permitido
objXML.async = false
'O método loadXML carrega parte do código, sem ter o documento XML
objXML.loadXML(strXML)
'Verifica possíveis erros com o método parseError
if objXML.ParseError.errorCode <> 0 then
response.write "Código do erro: " & objXML.parseError.errorCode & "<br>"
response.write "Posição no arquivo: " & objXML.parseError.filepos & "<br>"
response.write "Linha: " & objXML.parseError.line & "<br>"
response.write "Posição na linha: " & objXML.parseError.linepos & "<br>"
response.write "Descrição: " & objXML.parseError.reason & "<br>"
response.write "Texto que causa o erro: " & objXML.parseError.srcText & "<br>"
response.write "Url do arquivo com problemas: " & objXML.parseError.url
else
'Instancia o objeto documentElement para extrair os elementos
Set raiz = objXML.documentElement
'Looping para percorrer todos os elementos filhos
For i = 0 to raiz.childNodes.length -1
'A propriedade NodeName contém o nome do elemento
'A propriedade childNodes contém a lista de elementos filhos
response.Write raiz.NodeName & "<br>" & raiz.childNodes.item(i).childNodes.item(0).text & "<br><p>"
next
end if
'Destruíndo os objetos
Set objXML = Nothing
Set objSrvHTTP = Nothing
%>
tentei fazer isso mais deu erro
response.Write objXML.SelectSingleNode("Placemark").ChildNodes(4).InnerText
como posso resolver isso?
vlw xamburzum,
consegui chegar no nó assim
raiz.childNodes.item(0).childNodes.item(2).childNodes.item(3).childNodes.item(0).text
agora preciso saber se o nó existe
tentei isso, mas deu certo..
if isEmpty(raiz.childNodes.item(0).childNodes.item(2).childNodes.item(3).childNodes.item(0).text) then
o xml é dinamico , as vezes vem o nó , as vezes não..
alguem sabe como faço isso?
tenta assim:
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.setProperty "ServerHTTPRequest", True
objXML.async = False
objXML.Load(server.MapPath("teste.xml"))
set rootElement = objXML.documentElement
qtdElementos = rootElement.childNodes.length
for i = 0 to qtdElementos-1
qtdAtributos = rootElement.childNodes(i).attributes.length
for x = 0 to qtdAtributos-1
response.Write("Atributo: <b>" & rootElement.childNodes(i).attributes(x).name & "</b> - Valor: <b>" & rootElement.childNodes(i).attributes(x).text & "</b><br>")
next
olha este exemplo