2010-12-29 14 views
1

XMLを返す.asmx webserviceがあります。 XMLのサンプルビットは次のようになります。基本LINQ to XML質問

<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://tempuri.org/">http://www.mydomain.com/sample.txt</string> 

私はLINQを使い慣れていますが、それに精通したいと思います。私は文字列要素の内部の値を取得する必要があります。しかし、私はLINQでそれを行う方法がわかりません。現在、私は試しています:

string text = GetXmlText(); 
XDocument xml = XDocument.Parse(text); 
string url = xml.Descendants("string").SingleOrDefault().Value; 

このコードは例外をスローします。しかし、私は何が間違っているのか分かりません。 LINQで応答値を取得するにはどうすればよいですか?

ありがとうございます!

+0

まず、すべての子孫が要素であるとは限りません。次に、SingleOrDefaultではなくFirstOrDefaultを一般的に使用します。しかし、この例では、メソッドの問題を解決することができますElement() – vorrtex

+0

何の例外がありますか? – ShahidAzim

答えて

1

この特定の用途では、指定したXMLにルートノードのみが含まれていて、その値を必要とするため、必要なのはこれだけです。

string url = xml.Root.Value; 

実際にXMLが複雑な場合は、詳しく説明してください。しかし、string要素のxmlns属性を見てください。特定の要素または子孫を直接参照したい場合には、XNamespaceオブジェクトを使用する必要があります。

XNamespace ns = "http://tempuri.org/"; 
string url = (string)xml.Descendants(ns + "string").FirstOrDefault();