2012-09-27 15 views
6

में एक XML संसाधन फ़ाइल पढ़ना मैं अपने WinRT प्रयोग के लिए कुछ ऐप-विशिष्ट आइटम (जैसे एपीआई कुंजी) के लिए कॉन्फ़िगरेशन फ़ाइल सेट अप करने का प्रयास कर रहा हूं।जावास्क्रिप्ट WinRT ऐप

अब तक मैंने अपनी परियोजना की जड़ में "config.xml" फ़ाइल जोड़ दी है, इसे गुणों में संसाधन के रूप में चिह्नित किया है ... और फिर मैं अटक गया हूं।

जेएसओएन संसाधन फाइलों (जो कि किसी भी तरह से सम्मेलन द्वारा स्थानीयकरण से जुड़ा हुआ है और सामान्य कॉन्फ़िगरेशन सामान के लिए उचित प्रतीत नहीं होता है) से निपटने के लिए प्रतीत होता है, उदाहरण के लिए डिस्क से फ़ाइलों को लोड करना (जो काम नहीं करता है) चूंकि संसाधन .pri फ़ाइल में संकलित हो जाते हैं), या सी # का उपयोग करता है।

तो मैं यह काम अपने जावास्क्रिप्ट/एचटीएमएल 5 ऐप में कैसे कर सकता हूं?

मेरे नवीनतम प्रयास यह था:

var uri = new Windows.Foundation.Uri('ms-resource:///config'); 
var xml = Windows.ApplicationModel.Resources.ResourceLoader 
              .getStringForReference(uri); 

लेकिन यह काम नहीं करता और निम्न अपवाद फेंकता है:

0x80073b1f - JavaScript runtime error: ResourceMap Not Found. 

मैं क्या याद आ रही है?


मुझे लगता है कि मैं हो रही है करीब:

var r = Windows.ApplicationModel.Resources.Core.ResourceManager 
       .current.mainResourceMap.lookup('Files/config.xml'); 
var candidates = r.resolveAll(); 
candidates[0].getValueAsFileAsync().done(readXml); 

इस फ़ाइल में संसाधन पाता है, लेकिन सभी उम्मीदवार शामिल फाइल करने के लिए मूल निरपेक्ष पथ है, इसलिए getValueAsFileAsync() एक अपवाद कह "फेंकता सिस्टम निर्दिष्ट फ़ाइल नहीं मिल सकता है। " (और readXml कॉलबैक नहीं कहा जाता है)।

तो मुझे अभी भी इस XML फ़ाइल के सामग्री पर प्रतीत नहीं होता है।

उत्तर

3

इस प्रयास करें ...

var uri = new Windows.Foundation.Uri('ms-appx:///myFolder/myConfig.xml'); 
var file = Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri); 

अब आप फ़ाइल का उपयोग पार्स और आवश्यकतानुसार डेटा को संभालने के लिए कर सकते हैं।

+0

सुझाव के लिए धन्यवाद, लेकिन यह केवल तभी काम करता है जब फ़ाइल गुणों में "सामग्री" के रूप में चिह्नित की जाती है। मैंने इसे "संसाधन" के रूप में चिह्नित किया है, इसलिए यह डिस्क पर मौजूद नहीं है। –