2011-11-27 20 views
6

Mam plik XML, jak pokazano poniżej:HTML5 localStorage (XML/dane JSON)

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

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

... 

</itemnumbers> 

chciałbym używać HTML5 localStorage do przechowywania danych (i odzyskać dla szybszego dostępu) od danych XML nie zmienia się regularnie.

Mam zamiar najpierw przekonwertować go na JSON, a następnie zapisać w lokalnym usłudze. Czy powinienem to zrobić w kodzie lub mieć dane z góry w pliku .JSON zamiast pliku .xml?

Jak przeanalizować dane później? Obecnie używam kodu jQuery do analizowania ... coś takiego:

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

Czy powyższa praca kod po konwersji JSON?

Chciałbym przedstawić sugestie dotyczące najlepszego sposobu podejścia do tej kwestii.

+4

XML jest ciągiem znaków, JSON jest ciągiem znaków, 'localStorage' może posiadać łańcuchy. Dlaczego chcesz zmienić format danych? – zzzzBov

+0

Bcoz z lekkiego formatu JSON .... XML, jak sądzę, zajmuje więcej czasu na przeanalizowanie ... – testndtv

+1

Jeśli jest w pliku XML, dlaczego nie po prostu przechowywać dane w pliku .js (jak JSON) i być zrobić z tym? Jeśli chodzi o parsowanie XML, JavaScript dobrze analizuje XML i będziesz przedwcześnie optymalizowany ... – zzzzBov

Odpowiedz

1

Zgadzam się z niektórymi komentarzami, które można kontynuować przy użyciu XML. Jeśli chcesz konwertować na JSON, używałbyś pętli For In w javascript, aby przeglądać ją w pętli, podobnie jak obiekt w javascript.

dane w formacie JSON:

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

Przelotowe danych, gdzie dane jest obiekt JSON powyżej:

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

Aby zapisać obiekt w localStorage trzeba przekształcić go do formatu strun że możesz pobrać ponownie jako obiekt. Można użyć JSON.stringify(), aby uczynić obiekt string i JSON.parse(), aby wyciągnąć go wycofać:

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

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

Uważaj ponieważ metody te nie są obsługiwane w IE7 i poniżej trzeba więc aby znaleźć kompatybilną bibliotekę parsowania. Oto post, który może pomóc w zgodności:

Safely turning a JSON string into an object

+0

Dużo za to .... To rozwiązuje pierwszą połowę mojego pytania .... Jak zapisać go do lokalnego magazynu HTML5 i pobrać później, gdy jest dostępny? – testndtv

+0

Musisz zapisać obiekt jako ciąg do localStorage. Będę edytować odpowiedź, aby dołączyć przykład –

0

Proponuję, aby napisać skrypt, który konwertuje dane XML do JSON, a następnie wysłać go do po stronie klienta i zapisz go.

Później należy parsować JSON, gdy jest to wymagane, co jest bardzo łatwe. Podobnie jak następuje: -

var jsonObject = JSON.parse(yourObjectInJSON); 

Pętla przez niego: -

for (item in jsonObject.itemnumbers) { 
//do something with item data 
} 
Powiązane problemy