2009-06-20 16 views
5

Estoy intentando crear una aplicación Silverlight (por primera vez) que implique analizar XML desde un sitio y mostrar información. Para hacer esto, uso Visual Studio 2008 en Windows XP Service Pack 3. También tengo instalado .NET Framework 3.5 SP1.Cómo usar la clase XDocument en SilverLight Project (C#)

Mi problema es que no funciona ningún analizador XML que he visto en Internet. La parte superior de mi código Tengo ambas líneas que creo que son necesarias (usando "System.xml;" y usando "System.linq;") pero XDocument, XMLReader, XMLDocument y cualquier otro que he encontrado no funcionan, devolviendo el error que el tipo o espacio de nombres no se puede encontrar. Tengo .NET Framework.

No he encendido absolutamente nada en Internet con respecto a este problema. ¿Alguien tiene alguna idea?

EDIT: Acabo de descubrir que cuando abro el archivo fuera del contexto de un proyecto de Silverlight, puede usar XDocument. Es sólo cuando abro todo el proyecto que se presenta mi problema

Aquí hay un código de ejemplo que muestra el 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)); 
      } 
     } 
    } 
} 

de error 1: Esta línea contiene el siguiente error: El tipo o espacio de nombres ' Linq 'no existe en el espacio de nombres' System.Xml '(¿falta una referencia de ensamblado?)

Error 2: Esta línea contiene el siguiente error: El tipo o nombre del espacio de nombres' XDocument 'no existe en el espacio de nombres 'System.Xml' (¿falta una referencia de ensamblado?)

EDIT 2: Una vez que busqué en Google lo que significaba "agregar una referencia" a una biblioteca, la respuesta de Anthony resolvió el problema.

+0

Idea 1: cree una pequeña porción de código que reproduzca el problema, luego edite su pregunta para incluir el código, también agregue el mensaje de error completo que está recibiendo. –

+0

Puede que solo necesite agregarlos como referencias a su proyecto. –

Respuesta

9

Por defecto, un proyecto de Silverlight contendrá el archivo DLL System.XML embargo XDcoument está contenida en el archivo DLL System.Xml.Linq, esto se tendrá que añadir a su proyecto.

+1

También me gustaría señalar que este conjunto se encuentra en Conjuntos-> Extensiones en el Administrador de referencias, no en Conjuntos-> Marco. –

3

Asegúrese de agregar una referencia a la biblioteca XML adecuada

  • Para XMLDocument, XMLReader, etc ...: system.xml.dll
  • Para XDocument, XNode, etc ...: Sistema .Xml.Linq.dll
+2

Small point, Silverlight System.Xml dll no tiene el objeto XmlDocument, no hay soporte para ese DOM en particular en Silverlight. El único DOM disponible para Xml es XDocument. – AnthonyWJones

Cuestiones relacionadas