2011-10-03 14 views
5

Actualmente estoy usando servicios web XML o JSON en mis diversas aplicaciones.La mejor manera de almacenar en caché una respuesta XML/JSON en mi aplicación. ¿Archivo de texto completo?

Solo me gustaría saber cuál sería la forma más fácil de almacenar estas respuestas en algún lugar de los archivos de texto.

He estado pensando en las bases de datos, ¡pero esto parece bastante complicado!

Por lo tanto, lo que me gustaría hacer es

  1. para almacenar estos archivos XML/JSON en la memoria del teléfono, debería hacer algo así?

    String FILENAME = "MyXmlFile"; 
    String string = "hello world!"; 
    
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    fos.write(string.getBytes()); 
    fos.close(); 
    
  2. En el onCreate de mi solicitud, me gustaría analizar este archivo. Como todos los tutoriales muestran cómo analizar el archivo de la URL web, nunca encontré la forma de analizar un archivo de texto interno. ¿Alguien tiene un consejo sobre ese punto?

Thanks.

Respuesta

0

que será el opuesto de su escritura XML/JSON. Utilice openFileInput para obtener FileInputStream. Lea la secuencia en una cadena y luego analícela.

1

Puede aplicar SharedPreferences, que también es un archivo XML. Simplemente analice primero su JSON/XML, extraiga todo el par de claves/valores y luego escriba en su archivo pref. La próxima vez, cuando cargue onCreate(), simplemente vuelva a cargar las claves/valores de pref. Esta muestra podría darle un comienzo:
http://android-er.blogspot.com/2011/01/example-of-using-sharedpreferencesedito.html

+3

para analizar JSON en Java, lo recomiendo altamente GSON por Google - http://code.google.com/p/google-gson/ – Robert

+1

Sí, GSON es simplemente impresionante. En cuanto a la clave/valores de los pares en las preferencias, creo que será difícil ya que no sé la cantidad de elementos que tengo en la memoria, también puedo almacenar este número con preferencia, pero primero probaré la solución de Hamant Sharma y, si no se ajusta, intentará el tuyo. –

1

Otra forma es utilizar una impresionante biblioteca http-request. Le permite usar ETag para verificar si la respuesta no está modificada (HTTP 304 no modificado). Si no se modifica, use JSON desde el caché de archivos, de lo contrario, realice una solicitud para obtener el nuevo recurso.

File latest = new File("/data/cache.json"); 
HttpRequest request = HttpRequest.get("http://google.com"); 
//Copy response to file 
request.body(latest); 
//Store eTag of response 
String eTag = request.eTag(); 
//Later on check if changes exist 
boolean unchanged = HttpRequest.get("http://google.com") 
           .ifNoneMatch(eTag) 
           .notModified(); 
Cuestiones relacionadas