2009-04-03 9 views
18

Sto cercando di imparare alcune cose da Linq a XML e mi sono imbattuto nella funzione XPathSelectElement in XElement. Questa funzione sembra fare proprio quello di cui ho bisogno, ma per qualche ragione, non posso usarlo! Controlla il mio codice:C'è qualcosa di sbagliato nella mia libreria System.Xml.Linq?

 XElement rootElement = XElement.Load(dataFile); 
     XElement parentElement = rootElement.XPathSelectElement(xPath); 

Ho incluso riferimenti a System.Xml.Linq ovunque sia necessario. Tutte le altre cose in quella libreria che ho provato sembra funzionare, ma XPathSelectElement non appare nemmeno in Intellisense in Visual Studio.

Quando si costruisce il codice di cui sopra, ottengo il seguente errore:

Error 1 'System.Xml.Linq.XElement' does not contain a definition for 'XPathSelectElement' and no extension method 'XPathSelectElement' accepting a first argument of type 'System.Xml.Linq.XElement' could be found (are you missing a using directive or an assembly reference?) C:\PageHelpControl\PageHelp.cs 155 50 HelpControl

risposta

49

I metodi che si sta tentando di utilizzare sono menthods estensione. È necessario includere lo spazio dei nomi System.Xml.XPath.

14

Solo per legare le due risposte insieme ...

XPathSelectElement è un metodo di estensione. Per usarlo come un metodo di estensione (cioè come se si trattasse di un metodo di istanza su XNode) è necessario disporre di una direttiva using nel codice sorgente per lo spazio dei nomi in questione:

using System.Xml.XPath; 

(Ecco dove la classe Extensions che contiene le vite metodo di estensione.)

Questo funziona nello stesso modo in cui avete bisogno using System.Linq; nel codice prima di poter utilizzare Select, Where ecc su IEnumerable<T>.

Problemi correlati