2009-04-03 20 views
18

Estoy tratando de aprender algunas cosas de Linq a XML, y encontré la función XPathSelectElement en XElement. Esta función parece hacer justo lo que necesito, pero por alguna razón, ¡no puedo usarlo! Echa un vistazo a mi código:¿Hay algún problema con mi biblioteca System.Xml.Linq?

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

He incluido referencias a System.Xml.Linq en todas partes que es necesario. Todas las otras cosas en esa biblioteca que he probado parecen estar funcionando, pero XPathSelectElement ni siquiera aparece en el Intellisense en Visual Studio.

Cuando se construye el código anterior, me sale el siguiente error:

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

Respuesta

49

Los métodos que está intentando utilizar son menthods de extensión. Debe incluir el espacio de nombres System.Xml.XPath.

14

Sólo para ligar las dos respuestas juntos ...

XPathSelectElement es un método de extensión. Para usarlo como un método de extensión (es decir, como si se tratara de un método de instancia en XNode) es necesario tener una directiva using en el código fuente para el espacio de nombres relevantes:

using System.Xml.XPath; 

(Ahí es donde la clase Extensions que contiene las vidas método de extensión.)

Esto funciona de la misma manera que necesita using System.Linq; en el código antes de poder utilizar Select, etc Where en IEnumerable<T>.

Cuestiones relacionadas