Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-01-2020
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Leer valores XML

Hola han cambiado el formato del xml que necesito leer y no doy como leerlo:
Cita:
<?xml version="1.0" encoding="ISO-8859-1"?>
<observations xmlns="">
<observations>
<observations>
<stationID>IALMUDIDI</stationID>
<obsTimeUtc>2020-01-09T09:40:24Z</obsTimeUtc>
<obsTimeLocal>2020-01-09 10:40:24</obsTimeLocal>
<neighborhood>Abalate</neighborhood>
<softwareType>EasyWeatherV1.4.5</softwareType>
<country>ES</country>
<solarRadiation>91.13</solarRadiation>
<lon>-0.58356375</lon>
<epoch>1578562824</epoch>
<lat>42.04382324</lat>
<uv>1</uv>
<winddir>213</winddir>
<humidity>99</humidity>
<qcStatus>-1</qcStatus>
<metric>
<temp>-0.3888888888888885</temp>
<heatIndex>-0.3888888888888885</heatIndex>
<dewpt>-0.6111111111111119</dewpt>
<windChill>-0.3888888888888885</windChill>
<windSpeed>0</windSpeed>
<windGust>0</windGust>
<pressure>1020.522068496</pressure>
<precipRate>0</precipRate>
<precipTotal>0</precipTotal>
<elev>437.08320000000003</elev>
</metric>
</observations>
</observations>
</observations>
Alguien me puede decir como leo por ejemlo el valor neighborhood y el valor temp ?

tengo algo así pero se me ha olvidado como me muevo por los distintos nodos y demás y no doy
Código Delphi [-]

 try

XmlContent := GetContent('enlace del xml')
  except
    on E: Exception do
    begin
      Exit;
    end;
  end;

  if (not XmlContent.IsEmpty()) then
  begin
    XMLDoc.LoadFromXML(XmlContent);


begin

 StartItemNode := XMLDoc.DocumentElement.ChildNodes.FindNode('observations');
 label3.Text:=StartItemNode.childNodes['neighborhood'].Text;


 StartItemNode := XMLDoc.DocumentElement.ChildNodes.FindNode('metric');
  StartItemNode := XMLDoc.DocumentElement.ChildNodes.FindNode('temp') ;
 label1.Text:=  StartItemNode.Text+'ºC';



muuuchas gracias
Responder Con Cita
  #2  
Antiguo 09-01-2020
xalo xalo is offline
Miembro
 
Registrado: ene 2011
Posts: 18
Poder: 0
xalo Va por buen camino
El XPath del nodo neighborhood es '/observations/observations/observations/neighborhood', por tanto tienes que buscar el nodo hijo dentro de observations/observations y ya lo obtendrás sin problemas.

Saludos
Responder Con Cita
  #3  
Antiguo 09-01-2020
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Cita:
Empezado por xalo Ver Mensaje
El XPath del nodo neighborhood es '/observations/observations/observations/neighborhood', por tanto tienes que buscar el nodo hijo dentro de observations/observations y ya lo obtendrás sin problemas.

Saludos
muchas gracias entonces pongo
Código Delphi [-]
  StartItemNode := XMLDoc.DocumentElement.ChildNodes.FindNode('/observations/observations');
  label3.Text:=StartItemNode.childNodes['neighborhood'].Text;

o me estoy dejando algún obsevations?


Otra duda que me surge si el xml lo estoy descargando de una página segura https creo que no me deja pillar datos?
Código Delphi [-]
XmlContent := GetContent('https://api.weather.com/v2/pws/observations/current?stationId=IDDELAESTACION&format=xml&units=m&numericPrecision=decimal&apiKey=XXXXXXXXXXXXXX')
Alguna solución a esto?

Última edición por cocute fecha: 09-01-2020 a las 14:57:56.
Responder Con Cita
  #4  
Antiguo 09-01-2020
xalo xalo is offline
Miembro
 
Registrado: ene 2011
Posts: 18
Poder: 0
xalo Va por buen camino
Cita:
Quote:
Originally Posted by xalo View Post
El XPath del nodo neighborhood es '/observations/observations/observations/neighborhood', por tanto tienes que buscar el nodo hijo dentro de observations/observations y ya lo obtendrás sin problemas.

Saludos
muchas gracias entonces pongo
Código Delphi [-]
StartItemNode := XMLDoc.DocumentElement.ChildNodes.FindNode('/observations/observations');
label3.Text:=StartItemNode.childNodes['neighborhood'].Text;

o me estoy dejando algún obsevations?
No estoy seguro ahora si lleva la / inicial, ....pero pruébalo.

Cita:
Otra duda que me surge si el xml lo estoy descargando de una página segura https creo que no me deja pillar datos?
Código Delphi [-]
XmlContent := GetContent('https://api.weather.com/v2/pws/observations/current?stationId=IDDELAESTACION&format=xml&units=m&numericPrecision=decimal&apiKey=XXXXXXXXXXXXXX')
Alguna solución a esto?
No entiendo la pregunta. Mira que recibes en xmlContent.
Responder Con Cita
  #5  
Antiguo 10-01-2020
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Cita:
Empezado por xalo Ver Mensaje
No entiendo la pregunta. Mira que recibes en xmlContent.
es que no se que han tocado pero ya no consigo ver los ficheros xml que antes me permitía leer desde mi aplicación android,
si lo hago desde windows me deja pero desde android no.

por ejemplo este xml:
https://www.wunderground.com/weather...p?ID=IZARAGOZ9

como he dicho antes no se si puede ser porque ahora la dirección empieza por https en vez de por http

el fichero lo pillo con un IdHTTP con esta función, no si si eso es lo que debo cambiar, aunque antes me iba:
Código Delphi [-]
function GetContent(const URL: string): string;
  var
    Response: TStringStream;
  begin
    Response := TStringStream.Create(EmptyStr, TEncoding.UTF8);
    try
      IdHTTP1.Get(URL, Response);
      Result := Response.DataString;
    finally
      Response.Free();
    end;
  end;

Última edición por cocute fecha: 10-01-2020 a las 10:07:22.
Responder Con Cita
  #6  
Antiguo 10-01-2020
xalo xalo is offline
Miembro
 
Registrado: ene 2011
Posts: 18
Poder: 0
xalo Va por buen camino
Cambia tu código por el que se menciona aquí y funcionará.

Otro tema que te encontrarás en Android es el tema de versiones de las librerías Openssl, pero si buscas en el foro, seguro que encuentras la solución.

Saludos
Responder Con Cita
  #7  
Antiguo 12-01-2020
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 19
MaxiDucoli Va por buen camino
Cita:
Empezado por xalo Ver Mensaje
No estoy seguro ahora si lleva la / inicial, ....pero pruébalo.



No entiendo la pregunta. Mira que recibes en xmlContent.
HTTPS lo solucionas con las librerías SSL
creo que eran ssl.so o algo así que tenés que ponerle.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como leer valores Binarios del Registro JoAnCa OOP 5 09-09-2015 23:08:20
Leer valores hexadecimales del registro Feñiz OOP 1 28-01-2015 02:11:46
VALORES FANTASMAS FIREBIRD 2.1 valores Grandes ASAPLTDA Firebird e Interbase 17 02-12-2012 12:09:02
Driver dbExpress para db2 falla al leer valores BCD de campos DECIMAL rolandoj Conexión con bases de datos 9 10-08-2010 16:44:51
Leer arreglo de valores __hector PHP 2 12-12-2003 17:14:56


La franja horaria es GMT +2. Ahora son las 06:16:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi