2011-11-27 13 views
6

मैं एक एक्सएमएल फ़ाइल के रूप में नीचे देख सकते हैं:HTML5 localStorage (XML/JSON डेटा)

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

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

... 

</itemnumbers> 

मैं XML डेटा के बाद से HTML5 localStorage उपयोग करने के लिए डाटा स्टोर करने के लिए (और त्वरित पहुंच के लिए प्राप्त करें) चाहते हैं नियमित रूप से बदल नहीं है।

मैं इसे पहले JSON में बदलने की योजना बना रहा हूं और फिर इसे स्थानीय स्टोरेज में संग्रहीत करने की योजना बना रहा हूं। क्या मुझे कोड में ऐसा करना चाहिए या .xml फ़ाइल के बजाय .JSON फ़ाइल में डेटा को आगे बढ़ाना चाहिए?

मैं डेटा को बाद में कैसे पार्स करूं? वर्तमान में मैं jQuery कोड पार्स करने के लिए ... की तरह कुछ का उपयोग कर रहा:

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

चाहेंगे JSON रूपांतरण के बाद उपरोक्त कोड काम करता है?

मुझे इस दृष्टिकोण के सर्वोत्तम तरीके पर सुझाव चाहिए।

+4

एक्सएमएल एक स्ट्रिंग है, JSON एक स्ट्रिंग, 'localStorage' तार पकड़ कर सकते हैं। आप डेटा प्रारूप क्यों बदलना चाहते हैं? – zzzzBov

+0

जेएसओएन के हल्के प्रारूप का बोक्ज़ .... एक्सएमएल, मुझे लगता है, पार्स करने के लिए लंबा समय लगता है ... – testndtv

+1

यदि यह एक एक्सएमएल फ़ाइल में है, तो क्यों न केवल डेटा को .js (JSON के रूप में) फ़ाइल में संग्रहीत करें और हो इसके साथ किया? जहां तक ​​एक्सएमएल पार्सिंग है, जावास्क्रिप्ट एक्सएमएल को अच्छी तरह से पार करता है और आप समय-समय पर अनुकूलन कर रहे हैं ... – zzzzBov

उत्तर

1

मैं कुछ टिप्पणियों से सहमत हूं कि आप एक्सएमएल का उपयोग जारी रख सकते हैं। यदि आप JSON में कनवर्ट करना चाहते हैं, तो आप जावास्क्रिप्ट में फॉर इन लूप का उपयोग इसके माध्यम से लूप करने के लिए करेंगे जैसे कि आप जावास्क्रिप्ट में ऑब्जेक्ट करेंगे।

JSON में आपका डेटा:

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

अपने डेटा के माध्यम से लूपिंग जहां डेटा JSON वस्तु से ऊपर है:

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

localStorage में एक वस्तु बचाने के लिए आप एक स्ट्रिंग प्रारूप करने के लिए यह बदलना होगा कि आप एक वस्तु के रूप में फिर से वापस ला सकते हैं। आप एक वस्तु एक स्ट्रिंग बनाने के लिए JSON.stringify() का उपयोग कर सकते और JSON.parse() इसे बाहर वापस खींचने के लिए:

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

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

खबरदार क्योंकि इन तरीकों IE7 पर और नीचे ताकि आप की आवश्यकता होगी समर्थित नहीं हैं उनके साथ संगत एक पार्सिंग लाइब्रेरी खोजने के लिए। यहाँ एक पोस्ट है कि संगतता के साथ मदद दे सकता है:

Safely turning a JSON string into an object

+0

इस के लिए बहुत कुछ .... यह मेरे प्रश्न के पहले भाग को हल करता है .... मैं इसे HTML5 लोकल स्टोरेज में कैसे सहेजूं और इसे उपलब्ध होने पर बाद में पुनर्प्राप्त करूं? – testndtv

+0

आपको वस्तु को स्ट्रिंग के रूप में स्थानीय स्टोरेज में सहेजने की आवश्यकता है। मैं एक उदाहरण शामिल करने के लिए जवाब संपादित करेंगे –

0

मैं तुम्हें सुझाव है कि एक स्क्रिप्ट है कि JSON में XML डेटा धर्मान्तरित लिखने के लिए और फिर इसे ग्राहक के पक्ष को पर भेजने और उसे सहेजें।

बाद में जेएसओएन को आवश्यकतानुसार पार्स करें, जो करना बहुत आसान है। वैसे ही जैसे निम्नलिखित: -

var jsonObject = JSON.parse(yourObjectInJSON); 

इसके माध्यम से लूपिंग: -

for (item in jsonObject.itemnumbers) { 
//do something with item data 
} 
संबंधित मुद्दे