2009-04-03 5 views
18

J'essaie d'apprendre quelques trucs Linq en XML, et je suis tombé sur la fonction XPathSelectElement dans XElement. Cette fonction semble faire exactement ce dont j'ai besoin, mais pour une raison quelconque, je ne peux pas l'utiliser! Découvrez mon code:Y at-il un problème avec ma bibliothèque System.Xml.Linq?

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

J'ai inclus des références à System.Xml.Linq partout où cela est nécessaire. Tous les autres éléments de cette bibliothèque que j'ai essayés semblent fonctionner, mais XPathSelectElement n'apparaît même pas dans Intellisense dans Visual Studio.

Lors de la construction du code ci-dessus, je reçois l'erreur suivante:

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

Répondre

49

Les méthodes que vous essayez d'utiliser sont menthods d'extension. Vous devez inclure l'espace de noms System.Xml.XPath.

14

Juste pour lier les deux réponses ensemble ...

XPathSelectElement est une méthode d'extension. Pour l'utiliser comme une méthode d'extension (par exemple comme si elle était une méthode d'instance sur XNode), vous devez avoir une directive using dans votre code source de l'espace de noms correspondant:

using System.Xml.XPath; 

(C'est là la classe Extensions qui contient la vie de méthode d'extension.)

Cela fonctionne de la même manière que vous avez besoin using System.Linq; dans votre code avant de pouvoir utiliser Select, Where etc sur IEnumerable<T>.

Questions connexes