0

こんにちは、みんな
私は kendo mvc3 を初めて使用し、グリッド モデルとして Stackoverflow Rss を読み取ろうとしましたが、できませんでした。Yahoo rss を使用すると、プロジェクトは動作しますが、Stackoverflow RSS では動作しません

RSS リンク

https://stackoverflow.com/feeds http://news.yahoo.com/rss/

マイコントローラー機能

public static IEnumerable<Rss> GetRssFeed()
        {

            XDocument feedXml = XDocument.Load("https://stackoverflow.com/feeds");
            var feeds = from feed in feedXml.Descendants("entry")
                        select new Rss
                        {
                            Title = feed.Element("title").Value,
                            Link = "<a href="+feed.Element("id").Value+">Go To Page</a>",
                            Description = feed.Element("summary").Value
                        };
            return feeds;
        }

public ActionResult Index()
        {
            var model = GetRssFeed();
            return View(model);
        }

****私の部分的なビュー****

@model IEnumerable<KendoUIMvcApplication1.Models.Rss>



<div data-role="page" data-title="Aravind's Partial View Test" data-add-back-btn="true" data-back-btn-text="Back">
    <div class="grid" style="margin-left: 5px;" id="grid">


@(Html.Kendo().Grid(Model)
    .Name("Grid")
    .Pageable()
    .Sortable()
    .Scrollable()
    .Columns(columns =>
    {
        columns.Bound(o => o.Title).Encoded(false);
        columns.Bound(o => o.Description).Encoded(false);
        columns.Bound(o => o.Link).Encoded(false);
    })
    .Filterable()
    .DataSource(dataSource => dataSource
        .Ajax()

    )
)

    </div>
</div>

**** モデル ****

 public class Rss
        {
            public string Link { get; set; }
            public string Title { get; set; }
            public string Description { get; set; }
        }
4

1 に答える 1

0

フィードには名前空間が含まれているため、ノードを選択するときにそれらの名前空間を含める必要があります。

XDocument feedXml = XDocument.Load("http://stackoverflow.com/feeds");
var feeds = from feed in feedXml.Descendants("{http://www.w3.org/2005/Atom}entry")
select new Rss
{
    Title = feed.Element("{http://www.w3.org/2005/Atom}title").Value,
    Link = "<a href=" + feed.Element("{http://www.w3.org/2005/Atom}id").Value + ">Go To Page</a>",
    Description = feed.Element("{http://www.w3.org/2005/Atom}summary").Value
};

名前空間を変数に入れることもできます。

XDocument feedXml = XDocument.Load("http://stackoverflow.com/feeds");
var ns = XNamespace.Get("http://www.w3.org/2005/Atom");
var feeds = from feed in feedXml.Descendants(ns + "entry")
select new
{
    Title = feed.Element(ns + "title").Value,
    Link = "<a href=" + feed.Element(ns + "id").Value + ">Go To Page</a>",
    Description = feed.Element(ns + "summary").Value
};

また、提供したリンクでは、StackOverflow が Atom を使用しているのに対し、Yahoo は 2 つの異なる標準である RSS を使用していることにも注意してください。また、RSS には というタグさえないため、あなたのコードが Yahoo で機能する可能性は非常に低いと述べました<entry>

于 2013-08-26T14:18:55.493 に答える