2009-06-20 7 views
5

J'essaye de créer une application Silverlight (pour la première fois) qui consiste à analyser XML à partir d'un site et à afficher des informations. Pour ce faire, j'utilise Visual Studio 2008 sur Windows XP Service Pack 3. J'ai également installé .NET Framework 3.5 SP1.Comment utiliser la classe XDocument dans SilverLight Project (C#)

Mon problème est qu'aucun analyseur XML que j'ai vu sur Internet ne fonctionne. Le haut de mon code J'ai les deux lignes je crois sont nécessaires (en utilisant "System.xml;" et en utilisant "System.linq;") mais XDocument, XMLReader, XMLDocument, et tous les autres que j'ai trouvés ne fonctionnent pas, renvoyant l'erreur que le type ou l'espace de noms ne peut pas être trouvé. J'ai le .NET Framework.

Je n'ai absolument rien changé sur internet à propos de ce problème. Quelqu'un a-t-il une idée?

EDIT: Je viens de découvrir que lorsque j'ouvre le fichier en dehors du contexte d'un projet Silverlight, il est capable d'utiliser XDocument. Il est seulement quand j'ouvre l'ensemble du projet que mon problème se produit

Voici quelques exemples de code montrant le problème:

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

Erreur 1: Cette ligne contient l'erreur suivante: Le nom du type ou espace de noms ' Linq 'n'existe pas dans l'espace de noms' System.Xml '(manque-t-il une référence d'assembly?)

Erreur 2: Cette ligne contient l'erreur suivante: Le type ou le nom de l'espace de noms' XDocument 'n'existe pas dans l'espace de noms 'System.Xml' (manque-t-il une référence d'assembly?)

EDIT 2: Une fois que j'ai recherché sur Google ce que signifiait «ajouter une référence» à une bibliothèque, la réponse d'Anthony a résolu le problème.

+0

Idée 1: créez un petit morceau de code qui reproduit le problème, puis modifiez votre question pour inclure le code, ajoutez également le message d'erreur complet que vous recevez. –

+0

Vous devrez peut-être simplement les ajouter en tant que références à votre projet. –

Répondre

9

Par défaut un projet Silverlight contiendra le dll System.XML cependant XDcoument est contenue dans la dll System.Xml.Linq, cela vous devez ajouter à votre projet.

+1

Je note également que cet assembly se trouve sous Assemblies-> Extensions dans le gestionnaire de références, pas Assemblies-> Framework. –

3

Assurez-vous d'ajouter une référence à la bibliothèque XML approprié

  • Pour XMLDocument, XMLReader, etc ...: System.Xml.dll
  • Pour XDocument, XNode, etc ...: Système .Xml.Linq.dll
+2

Petit point, Silverlight System.Xml dll n'a pas l'objet XmlDocument, il n'y a pas de support pour ce DOM particulier dans Silverlight. Le seul DOM disponible pour Xml est XDocument. – AnthonyWJones

Questions connexes