【问题标题】:How to get a certain value in this XML file using XDocument?如何使用 XDocument 在此 XML 文件中获取某个值?
【发布时间】:2012-07-18 15:57:48
【问题描述】:
<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>

我如何得到这个值:

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/";

【问题讨论】:

  • 试试Url = (string)i.Element(serv + "group").Elements(media + "content").Last().Attribute("url").Value;
  • 谢谢威廉!奇迹般有效! :)
  • 它如何匹配没有在 XML 中任何位置声明的 xmlns:media="http://www.sampleX.com/" 属性的命名空间?它是在您未显示的元素上声明的吗?
  • 我认为这只是一个项目列表 xml 文件的摘录,其中命名空间声明为 anyhwere。
  • Batuu是对的,我只展示了xml的一部分

标签: c# xml linq linq-to-xml


【解决方案1】:

您可以使用此 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多