2009-06-20 16 views
5

Sto provando a creare un'applicazione Silverlight (per la prima volta) che prevede l'analisi di XML da un sito e la visualizzazione di informazioni. Per fare questo sto usando Visual Studio 2008 su Windows XP Service Pack 3. Ho anche installato .NET Framework 3.5 SP1.Come utilizzare la classe XDocument in SilverLight Project (C#)

Il mio problema è che nessun analizzatore XML che ho visto su Internet funziona. In cima al mio codice ho entrambe le linee che ritengo siano necessarie (usando "System.xml;" e usando "System.linq;") ma XDocument, XMLReader, XMLDocument e tutti gli altri che ho trovato non funzionano, restituendo l'errore che il tipo o lo spazio dei nomi non possono essere trovati. Ho .NET Framework.

Non ho girato assolutamente niente su Internet per quanto riguarda questo problema. Qualcuno ha qualche idea?

MODIFICA: Ho appena scoperto che quando apro il file al di fuori del contesto di un progetto Silverlight, è in grado di utilizzare XDocument. E 'solo quando ho aperto l'intero progetto che il mio problema si verifica

Ecco alcuni esempi di codice che mostra il problema:

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)); 
      } 
     } 
    } 
} 

di errore 1: Questa riga contiene il seguente errore: Il tipo o dello spazio dei nomi il nome' Linq 'non esiste nello spazio dei nomi' System.Xml '(manca un riferimento all'assembly?)

Errore 2: questa riga contiene il seguente errore: Il tipo o il nome dello spazio dei nomi' XDocument 'non esiste nello spazio dei nomi 'System.Xml' (ti manca un riferimento all'assembly?)

EDIT 2: Dopo aver cercato su Google cosa significava "aggiungere un riferimento" a una libreria, la risposta di Anthony risolveva il problema.

+0

Idea 1: crea un piccolo pezzo di codice che riproduce il problema, quindi modifica la domanda per includere il codice, aggiungi anche il messaggio di errore completo che stai ricevendo. –

+0

Potrebbe essere necessario aggiungerli come riferimenti al progetto. –

risposta

9

per impostazione predefinita un progetto Silverlight conterrà la dll System.Xml tuttavia XDcoument è contenuta nel dll System.Xml.Linq, questo si dovrà aggiungere al progetto.

+1

Vorrei anche notare che questo assembly si trova in Assemblies-> Extensions in Reference Manager, non Assemblies-> Framework. –

3

Assicurati di aggiungere un riferimento alla libreria XML appropriato

  • Per XMLDocument, XMLReader, ecc ...: System.xml.dll
  • Per XDocument, XNode, ecc ...: Sistema .Xml.Linq.dll
+2

Piccolo punto, Silverlight System.Xml dll non ha l'oggetto XmlDocument, non c'è supporto per quel particolare DOM in Silverlight. L'unico DOM disponibile per Xml è XDocument. – AnthonyWJones

Problemi correlati