如何使用XDocument获取此XML文件中的某个值?

问题描述:

<item> 
<title>Lorem Ipsum</title> 
<media:group> 
    <media:content url = "http://www.sample.com" rate = "0" /> 
    <media:content url = "http://www.sample1.com" rate = "1" /> 
    <media:content url = "http://www.sample2.com" rate = "2" /> 
</media:group> 
</item> 

我如何得到这个值:如何使用XDocument获取此XML文件中的某个值?

http://www.sample2.com

我尝试使用此代码:

var query = from i in loadedData.Descendants("item") 
select new Site 
{ 
    Title = (string)i.Element("title"), 
    Url = (string)i.Element(serv + "group").Elements(media + "content").Last() 
}; 
site = query.ToList(); 

,但URL的值是 “”。 我也有这样的:

private static readonly XNamespace media = "http://www.sampleX.com/"; 
+0

尝试'URL =(字符串)i.Element(SERV + “集团”)的元素(媒体+ “content”)。Last()。Attribute(“url”)。Value;' – Willem 2012-07-18 16:05:22

+0

Thanks Willem!奇迹般有效! :) – 2012-07-18 16:44:14

+0

它如何匹配名称空间而不在xmlns:media =“http://www.sampleX.com/”属性中声明XML中的任何位置?它是否在你没有展示的元素上声明? – JamieSee 2012-07-18 16:44:57

您可以使用此LINQ查询:

var list = loadedData.Descendants("item") 
        .Select(e => new Site() 
            { 
            Title = e.Element("title") 
              .Value, 
            Url = e.Descendants(media + "content") 
              .Last() 
              .Attribute("url") 
              .Value 
            }) 
        .ToList(); 
+0

无法将媒体需要添加到内容而不是网址。 – JamieSee 2012-07-18 16:40:18

+0

@JamieSee完成! ;) – Batuu 2012-07-18 16:42:58

+0

这也工作:)谢谢Batuu! – 2012-07-18 16:49:26