簡體   English   中英

XML Linq讀取多個節點

[英]XML Linq Reading multiple nodes

我正在嘗試從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()之后,它也只會得到一行。

您正在處理錯誤的文檔級別。 您還需要一個名稱空間。

  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
                 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM