2009-04-03 6 views
18

私はLinq to XMLを学習しようとしていますが、XElementのXPathSelectElement関数を見つけました。この機能は私が必要としているように思えますが、何らかの理由で私は使用できません!私のコードをチェックしてください:System.Xml.Linqライブラリに問題がありますか?

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

私は必要な場所にSystem.Xml.Linqへの参照を含めました。私が試したそのライブラリの他のものはすべて動作しているようですが、XPathSelectElementはビジュアルスタジオのIntellisenseに表示されません。

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

答えて

49

使用しようとしている方法は、拡張menthodsです:上記のコードをビルドする場合

は、私は次のエラーを取得します。 System.Xml.XPath名前空間を含める必要があります。ただ、一緒に2つの答えを結びつける

14

...

XPathSelectElementは、拡張メソッドです。 (それはXNodeのインスタンスメソッドであるかのようにすなわち)として拡張メソッドを使用するには、関連する名前空間のためのソースコードでusingディレクティブを持っている必要があります:

using System.Xml.XPath; 

(どこExtensionsクラスそれはですこれは拡張メソッドの命が含まれています。)

これは、あなたがIEnumerable<T>SelectWhereなどを使用することができます前に、あなたのコードでusing System.Linq;を必要とするのと同じ方法で動作します。