2011-11-27 16 views
6

Ho un file XML come illustrato di seguito:HTML5 localStorage (XML/dati JSON)

<itemnumbers> 
<item> 
<itemno>123</itemno> 
<desc>Desc about 123</desc> 
</item> 

<item> 
<itemno>456</itemno> 
<desc/> 
</item> 

... 

</itemnumbers> 

Vorrei utilizzare il HTML5 localStorage per memorizzare i dati (e recuperare per un accesso più rapido) dal momento che i dati XML non cambia regolarmente

Sto pianificando di convertirlo prima in JSON e quindi di memorizzarlo nel localStorage. Dovrei farlo nel codice o avere i dati in anticipo nel file .JSON invece del file .xml?

Come analizzare i dati in un secondo momento? Attualmente sto usando il codice jQuery per analizzare ... qualcosa di simile:

$(this).find("itemno").each(function() 
{ 
$(this).text(); 
$(this).next().text() 
} 

Sarebbe quanto sopra lavoro codice dopo la conversione JSON?

Desidero suggerimenti sul modo migliore per avvicinarsi a questo.

+4

XML è una stringa, JSON è una stringa, 'localStorage' può contenere stringhe. Perché vuoi cambiare il formato dei dati? – zzzzBov

+0

Bcoz del formato leggero di JSON .... XML, penso, richiede più tempo per analizzare ... – testndtv

+1

Se si trova in un file XML, perché non archiviare semplicemente i dati in un file .js (come JSON) ed essere fatto con esso? Per quanto riguarda l'analisi dell'XML, JavaScript analizza l'XML abbastanza bene e si ottimizzerebbe prematuramente ... – zzzzBov

risposta

1

Sono d'accordo con alcuni dei commenti che è possibile continuare a utilizzare XML. Se vuoi convertire in JSON, dovresti usare un ciclo For In in javascript per farlo scorrere come se fosse un oggetto in javascript.

I Suoi dati in JSON:

{"itemnumbers": 
    { "item": {"itemno": 123, "desc": "Desc about 123"} } 
    { "item": {"itemno": 456, "desc": "Desc about 456"} } 
} 

Looping attraverso i vostri dati di cui i dati sono l'oggetto JSON sopra:

for (item in data.itemnumbers) { 
    //do something with item data 
    console.log(data.itemnumbers[item].itemno); 
    console.log(data.itemnumbers[item].desc); 
} 

Per salvare un oggetto in localStorage è necessario trasformarla in un formato stringa che puoi tornare indietro come oggetto. È possibile utilizzare JSON.stringify() per rendere un oggetto in una stringa e JSON.parse() per tirare di nuovo fuori:

//saving object to localStorage 
localStorage['my_data'] = JSON.stringify(data); 

//fetching object from localStorage 
data = JSON.parse(localStorage['my_data']); 

Attenzione perché questi metodi non sono supportati su IE7 e al di sotto quindi avrete bisogno per trovare una libreria di analisi compatibile con loro. Ecco un post che potrebbe aiutare con la compatibilità:

Safely turning a JSON string into an object

+0

Thx molto per questo .... Questo risolve la prima metà della mia domanda .... Come faccio a salvarlo in localStorage HTML5 e recuperarlo più tardi quando è disponibile? – testndtv

+0

È necessario salvare l'oggetto come stringa su localStorage. Modificherò la risposta per includere un esempio –

0

Vorrei suggerire di scrivere uno script che converte i dati XML in JSON e poi inviarlo verso il lato client e salvarlo.

In seguito analizzare il JSON quando richiesto, operazione molto semplice. Proprio come i seguenti: -

var jsonObject = JSON.parse(yourObjectInJSON); 

Looping attraverso di essa: -

for (item in jsonObject.itemnumbers) { 
//do something with item data 
} 
Problemi correlati