2016-11-29 63 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(); 
相關問題