XML Linq读取多个节点

本文关键字:节点 读取 Linq XML | 更新日期: 2023-09-27 18:24:00

我正试图从wordpress博客xml提要中提取数据,这是xml的格式:http://brockallen.com/category/asp-net/feed/

var xElements = XElement.Parse(ResponseText);
var blogs = (from temp in xElements.Elements()
             select new 
             {
                 Title = temp.Element("item").Element("title").Value,
                 URL = temp.Element("item").Element("link").Value,
                 Image = temp.Element("item").Element("media:content").Value
             }).FirstOrDefault();

我如何获取所有这些,并将它们存储到一个对象中?

media:content上的错误是":"字符(十六进制值0x3A)不能包含在名称中

当我删除该行时,它只得到一行,当有更多行时,即使在删除FirstOrDefault() 之后也是如此

XML Linq读取多个节点

您在错误的文档级别上工作。此外,您还需要一个命名空间。

  XNamespace media = "http://search.yahoo.com/mrss/";
  var items =
  from channelElement in XElement.Parse(ResponseText).Element("channel").Elements("item")
  select new {
    Title = channelElement.Element("title").Value,
    Url = channelElement.Element("link").Value,
    MediaItems = (
        from mediaItemElement in channelElement.Elements(media + "content")
        select new {
            url = mediaItemElement.Attribute("url").Value,
            medium = mediaItemElement.Attribute("medium").Value
            }
        ).ToList()
  };

试试这个。。。更新了用于查询content元素的命名空间

    // var xDoc = XDocument.Load(@"<your xml location>");
    var xDoc = XDocument.Parse("<your xml string>");
    XNamespace ns = "http://search.yahoo.com/mrss/";
    var blogs = (from temp in xDoc.Descendants().Elements("item")
                 select new
                 {
                     Title = temp.Element("title").Value,
                     URL = temp.Element("link").Value,
                     Image = temp.Element(ns + "content").Value
                 });