2009-06-20 4 views
5

में एक्सडॉक्यूमेंट क्लास का उपयोग कैसे करें मैं एक सिल्वरलाइट एप्लिकेशन (पहली बार) बनाने की कोशिश कर रहा हूं जिसमें साइट से XML को पार्स करना और जानकारी प्रदर्शित करना शामिल है। ऐसा करने के लिए मैं विंडोज एक्सपी सर्विस पैक 3 पर विजुअल स्टूडियो 2008 का उपयोग कर रहा हूं। मेरे पास .NET Framework 3.5 SP1 भी स्थापित है।सिल्वरलाइट प्रोजेक्ट (सी #)

मेरी समस्या यह है कि इंटरनेट कार्यों पर मैंने कोई एक्सएमएल-पार्सर नहीं देखा है। मेरे कोड के शीर्ष में मेरे पास दोनों पंक्तियां हैं जो मुझे विश्वास है ("System.xml;" का उपयोग करके और "System.linq;" का उपयोग करके) लेकिन XDocument, XMLReader, XMLDocument, और किसी अन्य जो मैंने पाया है वह काम नहीं करता है, त्रुटि लौटाता है कि प्रकार या नामस्थान नहीं मिला। मेरे पास .NET Framework है।

मैंने इस समस्या के बारे में इंटरनेट पर बिल्कुल कुछ भी नहीं बदला है। क्या किसी के पास कोई विचार है?

संपादित करें: मुझे अभी पता चला है कि जब मैं सिल्वरलाइट प्रोजेक्ट के संदर्भ के बाहर फ़ाइल खोलता हूं, तो यह XDocument का उपयोग करने में सक्षम होता है। यह केवल तब होता है जब मैं पूरी परियोजना है कि मेरी समस्या तब होती है

यहाँ खोलने कुछ नमूना समस्या दिखा कोड है:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using System.Xml.Linq; //Error 1 (See below) 

namespace LastfmAmazon 
{ 
    public partial class Page : UserControl 
    { 
     public Page() 
     { 
      InitializeComponent(); 
     } 

     public void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
     { 
      XDocument doc = XDocument.Parse(e.Result); //Error 2: see below 

     } 

     public void Button_Click(object sender, RoutedEventArgs e) 
     { 

      if (uname.Text != String.Empty) 
      { 
       App app = (App)Application.Current; 
       app.UserName = uname.Text; 
       String getTopArtists = "http://ws.audioscrobbler.com/2.0/?method=user.gettopartists&user=" + app.UserName + "&api_key=d2d620af554a60f228faed8d502c4936"; 
       uname.Text = "Try Another One!"; 
       WebClient web = new WebClient(); 
       WebClient client = new WebClient(); 
       client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompleted); 
       client.DownloadStringAsync(new Uri(getTopArtists)); 
      } 
     } 
    } 
} 

त्रुटि 1: यह पंक्ति निम्न त्रुटि शामिल हैं: प्रकार या नाम स्थान का नाम ' लिंक 'नामस्थान' System.Xml 'में मौजूद नहीं है (क्या आप एक असेंबली संदर्भ खो रहे हैं?)

त्रुटि 2: इस पंक्ति में निम्न त्रुटि है: नामस्थान में प्रकार या नामस्थान नाम' XDocument 'मौजूद नहीं है 'System.Xml' (क्या आप एक असेंबली संदर्भ खो रहे हैं?)

संपादित करें 2: एक बार जब मैंने पुस्तकालय में "संदर्भ जोड़ने" के लिए क्या किया, तो एंथनी के जवाब ने समस्या हल की।

+0

आइडिया 1: कोड का एक छोटा टुकड़ा बनाएं जो समस्या को पुन: उत्पन्न करता है, फिर कोड को शामिल करने के लिए अपने प्रश्न को संपादित करें, आपको प्राप्त होने वाले पूर्ण त्रुटि संदेश को भी जोड़ें। –

+0

आपको उन्हें अपनी परियोजना के संदर्भ के रूप में जोड़ने की आवश्यकता हो सकती है। –

उत्तर

9

डिफ़ॉल्ट रूप से एक Silverlight परियोजना System.Xml dll तथापि XDcoument System.Xml.Linq dll में निहित है में शामिल होंगे, यह आप अपनी परियोजना में जोड़ने के लिए होगा।

+1

मैं यह भी ध्यान दूंगा कि यह असेंबली असेंबली-> संदर्भ प्रबंधक में विस्तार, असेंबली-> फ्रेमवर्क नहीं है। –

3

सुनिश्चित करें कि आप उचित एक्सएमएल पुस्तकालय

  • XMLDocument, XMLReader, आदि के लिए के लिए एक संदर्भ जोड़ने का ध्यान ...: System.Xml.Dll
  • XDocument, XNode, आदि के लिए ...: सिस्टम .Xml.Linq.dll
+2

छोटे बिंदु, सिल्वरलाइट सिस्टम। एक्सएमएल डीएल में XmlDocument ऑब्जेक्ट नहीं है, सिल्वरलाइट में उस विशेष डोम के लिए कोई समर्थन नहीं है। एक्सएमएल के लिए उपलब्ध एकमात्र डोम एक्स डॉक्यूमेंट है। – AnthonyWJones