2009-04-23 11 views
1

と取得の要素が、私は、このXMLファイルがあります:私はこのXMLを照会し、すべてのオブジェクトの要素を取得したい、今すぐLinqToXML:与えられた値

<objects> 
    <object> 
    <value>test</value> 
    </object> 
    <object> 
    <value>foo</value> 
    </object> 
    <object> 
    <value>bar</value> 
    </object>  
</objects> 

をどこ値、要素内のテキスト= " foo "

これを行う簡単な方法はありますか?

私はこのような何か試してみました:)私は(あなたが

xml.Descendants("value") 

xml.Elementsを探しているのだと思い

動作しません
var objects = from e in xml.Elements("value") 
       where e.Value.Equals("foo", StringComparison.OrdinalIgnoreCase) 
       select e.parent; 

..

+0

あなたは "働かない"と定義できますか? コンパイルエラーが発生しますか?それはセット、空またはそれ以外のものを返しますか? – JoshJordan

+0

「列挙で結果が得られませんでした」のように「機能しません」。 – Vegar

答えて

3

を子要素を返すだけです... xmlがルートXDocumentであれば何も返しません。

+0

はい、子孫と値のトリミングは私の問題を解決しました。ありがとう。 – Vegar

0
var objects = from e in xml.Descendants("object").Elements("value") 
          where e.Value.Equals("foo", StringComparison.OrdinalIgnoreCase) 
          select e.Parent; 
1

ドキュメントルートからクエリしていると仮定して、xml.Descendantsを使用する必要があります。また、私は以上は、要素のプロパティによって返された文字列をオフと呼ばれる equalsメソッドをstring.Equalsを使用して好む例えば(のみの好みの問題として。):

var objects = from e in xml.Descendants("value") 
       where string.Equals(e.Value, 
            "foo", 
            StringComparison.OrdinalIgnoreCase) 
       select e.Parent; 
+0

何らかの理由で、string.Equals()を使用してしまいました... – Vegar

関連する問題