2016-11-29 19 views
0
<photos items="5"> 
<path> 
http://www.test1.com 
</path> 
<path> 
http://www.test2.com 
</path> 
<path> 
http://www.test3.com 
</path> 
<path> 
http://www.test4.com 
</path> 
<path> 
http://www.test5.com 
</path> 
</photos> 

pathノードの値をすべてリストに集めようとしています。同じ名前の子ノードの値を取得する

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

var nodes = (from n in xdoc.Descendants("photos") 
      select n.Elements("path")).ToList(); 

そして、私はリストにパスノードの各値を格納したいforeachループを使用した後に...しかし、私は方法がわかりませんか?他の簡単な解決法はありますか?

答えて

2

は、あなたが望むものを、このです:

  const string xml = @" 
<photos items=""5""> 
<path> 
http://www.test1.com 
</path> 
<path> 
http://www.test2.com 
</path> 
<path> 
http://www.test3.com 
</path> 
<path> 
http://www.test4.com 
</path> 
<path> 
http://www.test5.com 
</path> 
</photos>"; 
      var xdoc = XElement.Parse(xml); 
      var paths = xdoc.Elements("path").Select(p => p.Value); 

XMLは上記のスキーマを持つファイルから来ている場合は、あなたがそれをLoadことができます。

 xdoc = XElement.Load("photos.xml"); 
     var paths = xdoc.Elements("path").Select(p => p.Value).ToList(); 
+0

私は答えに詳細を入れている、何の結果 –

+0

@FlorinMを取得していません。 –

+0

xml部分全体をハードコードしないで他の解決策がありますか? –

0

これは動作するようです:

var paths = xdoc.Descendants("photos").Elements("path").Select(p => p.Value); 

および次に

foreach(string p in paths) 
{ 
/// get the urls in some list 
} 
0

あなたは次のことを試すことができます。

XDocument xdoc = XDocument.Load("full path to xml file"); 
List<string> values = xdoc.Root.Elements("path").Select(p => p.Value.Trim()).ToList(); 
関連する問題