Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   XML vacio o no existente bajo android (https://www.clubdelphi.com/foros/showthread.php?t=94710)

Esteban74 01-06-2020 14:08:00

XML vacio o no existente bajo android
 
Hola, los molesto con esta consulta, estoy intentando descargar un archivo XML desde una web y grabarlo en el almacenamiento interno de un celular sin resultados obteniendo el sig mensaje "XML document must have a top level element. Line:1"
Este es el codigo con problemas:

Código Delphi [-]
/////////////////////////////////////////////////////////////////////////////////////////////////////
procedure TModuloDatos.Obtenerclima;
var
 consulta, archivo: string;
 buffer:TFileStream;

begin

 consulta:=direccionweb+ tabLocalidades.FieldByName('id').AsString;        

 {$IFDEF Android}
   archivo := TPath.Combine(tpath.getdocumentspath ,'datosclima.xml');
 {$ENDIF}

 {$IFDEF MSWINDOWS}
   archivo := extractfilepath(paramstr(0)) + 'datosclima.xml';
   frmPrincipal.Memo1.Lines.Add(archivo);
 {$ENDIF}

 try
  Buffer := TFileStream.Create(archivo, fmCreate{ or fmShareDenyWrite});
  try
   WebTuTiempo.Get(Consulta,Buffer);
  except on E: Exception do
  end;
 finally
  Buffer.Free;
 end;
 frmPrincipal.Memo1.Lines.Add(archivo);                 // la ruta aparece correctamente
 frmPrincipal.Memo1.Lines.LoadFromFile(archivo);   // esto no carga nada bajo android 

end;
/////////////////////////////////////////////////////////////////////////////////////////////////////

el codigo funciona correctamente bajo windows pero bajo entorno android falla con el mensaje del inicio y el loadFromFile no carga nada como si el xml estubiera vacio.
No soy un experto, solo me motiva mi curiosidad, ganas de aprender y deceos de hacer algo en esta cuarentena, si alguien puede darme una ayuda le estaria muy agradecido, gracias por su tiempo.

Casimiro Notevi 01-06-2020 21:33:39

En teoría, el xml está mal, pero no podemos ayudar mucho sin más información.

Esteban74 01-06-2020 22:20:43

gracias por responder, esta es al salida que me otorga la consulta web (un XML con datos del clima) fue copiada desde el explorer:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<data>
<copyright>© Tutiempo Network, S.L.</copyright>
<use>Se autoriza el uso de estos datos citando a </use>
-<information>
<temperature>ºC</temperature>
<wind>km/h</wind>
<humidity>%</humidity>
<pressure>hPa</pressure>
</information>
<web> xxxxxx </web>
<language>es</language>
-<locality>
<name>Achiras</name>
<url_weather_forecast_15_days> xxxxxxxxxxxxxx </url_weather_forecast_15_days>
<url_hourly_forecast> xxxxxx </url_hourly_forecast>
<country>Argentina</country>
<url_country> xxxxxxxx </url_country>
</locality>
-<day1>
<date>2020-6-1</date>
<temperature_max>15</temperature_max>
<temperature_min>3</temperature_min>
<icon>4</icon>
<text>Parcialmente nuboso</text>
<humidity>40</humidity>
<wind>22</wind>
<wind_direction>Noroeste</wind_direction>
<icon_wind>NO</icon_wind>
<sunrise>8:14</sunrise>
<sunset>18:21</sunset>
<moonrise>15:43</moonrise>
<moonset>03:19</moonset>
<moon_phases_icon>hs/11</moon_phases_icon>
</day1>
+<day2>
+<day3>
+<day4>
+<day5>
+<day6>
-<day7>
<date>2020-6-7</date>
<temperature_max>15</temperature_max>
<temperature_min>5</temperature_min>
<icon>6</icon>
<text>Muy nuboso</text>
<humidity>63</humidity>
<wind>20</wind>
<wind_direction>Nordeste</wind_direction>
<icon_wind>NE</icon_wind>
<sunrise>8:17</sunrise>
<sunset>18:20</sunset>
<moonrise>20:15</moonrise>
<moonset>10:05</moonset>
<moon_phases_icon>hs/16</moon_phases_icon>
</day7>
-<hour_hour>
-<hour1>
<date>2020-6-1</date>
<hour_data>16:00</hour_data>
<temperature>14</temperature>
<text>Despejado</text>
<humidity>27</humidity>
<pressure>1020</pressure>
<icon>1</icon>
<wind>16</wind>
<wind_direction>Noroeste</wind_direction>
<icon_wind>NO</icon_wind>
</hour1>
+<hour2>
+<hour3>
+<hour4>
+<hour5>
+<hour6>
+<hour7>
+<hour8>
+<hour9>
+<hour10>
+<hour11>
+<hour12>
+<hour13>
+<hour14>
+<hour15>
+<hour16>
+<hour17>
+<hour18>
+<hour19>
+<hour20>
+<hour21>
+<hour22>
+<hour23>
+<hour24>
-<hour25>
<date>2020-6-2</date>
<hour_data>16:00</hour_data>
<temperature>17</temperature>
<text>Cubierto</text>
<humidity>32</humidity>
<pressure>1013</pressure>
<icon>7</icon>
<wind>16</wind>
<wind_direction>Noroeste</wind_direction>
<icon_wind>NO</icon_wind>
</hour25>
</hour_hour>
</data>

Casimiro Notevi 01-06-2020 22:48:10

¿Ese xml es correcto?
Creo que no.

Esteban74 02-06-2020 00:16:07

1 Archivos Adjunto(s)
Ahi envio el archivo original adjunto

Esteban74 22-06-2020 06:34:14

bueno luego de renegar encontre la solucion este codigo me funciono bien y me faltaba las librerias SSL para windows y android, publco por si alguien tiene este problema tambien. A los que me dieron una mano, gracias:

Código Delphi [-]
///////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure TModuloDatos.Obtenerclima;
var
 consulta, archivo: string;
 FT:TFileStream;
begin
 consulta:= "ruta a la api mas datos " + tabLocalidades.FieldByName('id').AsString;        

 {$IFDEF Android}
   archivo := TPath.Combine(tpath.getdocumentspath ,'datosclima.xml');
 {$ENDIF}

 {$IFDEF MSWINDOWS}
   archivo := extractfilepath(paramstr(0)) + 'datosclima.xml';
 {$ENDIF}

 frmPrincipal.Memo1.Lines.Add('---------------');
 frmPrincipal.Memo1.Lines.Add('Ruta al XML');
 frmPrincipal.Memo1.Lines.Add(archivo);
 frmPrincipal.Memo1.Lines.Add('---------------');
 frmPrincipal.Memo1.Lines.Add('creo el archivo');
 FT := TFileStream.Create(archivo,fmCreate);
 try
   try
    frmPrincipal.Memo1.Lines.Add('---------------');
    frmPrincipal.Memo1.Lines.Add('ejecuto strXML := WebTuTiempo.Get(Consulta);');
    WebTuTiempo.Get(Consulta,FT);
   except on E: Exception do

   end;
 finally
  FT.Free;
 end;
end;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
Acepto criticas constructivas, aun soy nuevo en esto.

Casimiro Notevi 22-06-2020 08:28:40

^\||/^\||/^\||/


Y no olvides poner el código entre sus etiquetas respectivas.



La franja horaria es GMT +2. Ahora son las 18:22:22.

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