2011-10-03 5 views
5

Attualmente sto usando servizi web XML o JSON nelle mie varie applicazioni.Il modo migliore per memorizzare nella cache una risposta XML/JSON nella mia applicazione. File di testo completo?

Vorrei solo sapere quale sarebbe il modo più semplice per archiviare queste risposte in qualche file di testo.

Ho pensato ai database, ma questo sembra abbastanza complicato!

Allora, che cosa vorrei fare è

  1. di salvare questi file XML/JSON nella memoria del telefono, devo fare una cosa del genere?

    String FILENAME = "MyXmlFile"; 
    String string = "hello world!"; 
    
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    fos.write(string.getBytes()); 
    fos.close(); 
    
  2. Nel onCreate della mia candidatura, vorrei analizzare questo file. Poiché tutte le esercitazioni mostrano come analizzare il file dall'URL del Web, non ho mai trovato un modo per analizzare un file di testo interno. Qualcuno ha un consiglio su questo punto?

Grazie.

risposta

0

Sarà l'opposto del vostro XML scrittura/JSON. Utilizzare openFileInput per ottenere FileInputStream. Leggi lo stream su una stringa e poi analizzalo.

1

È possibile applicare SharedPreferences, che è anche un file XML. Analizza prima il tuo JSON/XML, estrai tutte le coppie di valori/chiavi e poi scrivi nel tuo pref file. La prossima volta, quando carichi suCreate(), carica nuovamente le chiavi/i valori da pref. Questo campione potrebbe dare un inizio:
http://android-er.blogspot.com/2011/01/example-of-using-sharedpreferencesedito.html

+3

Per l'analisi JSON in Java, consiglio vivamente GSON da Google - http://code.google.com/p/google-gson/ – Robert

+1

Sì, GSON è solo impressionante. Per quanto riguarda le coppie chiave/valori nelle preferenze, penso che sarà difficile visto che non conosco il numero di elementi, ho in memoria, posso anche memorizzare questo numero di preferenza, ma prima tenterò la soluzione di Hamant Sharma e se non va bene, proverò il tuo. –

1

Un altro modo è utilizzare una fantastica libreria http-request. Consente di utilizzare ETag per verificare se la risposta non è stata modificata (HTTP 304 non modificato). Se non modificato, usa JSON dalla cache dei file, altrimenti fai una richiesta per ottenere la nuova risorsa.

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(); 
Problemi correlati