簡體   English   中英

在ASP.NET MVC(C#)中使用XML Feed的最佳方法

[英]Best way to consume xml feed in asp.net MVC (c#)

我有一個MVC網站,當您單擊按鈕時,將使用Get方法從另一個網站獲取xml數據。 然后,我需要在網頁中顯示此XML的一部分。

我當前的方法是將XML反序列化為對象,然后將對象傳遞到View,然后將獲取適當的數據。

我的問題是我的類沒有完全匹配XML數據(它沒有每個元素/屬性/等)。 數據太長,元素和屬性太多,所以我不想將所有內容都寫到類中。 而且由於數據中的某些錯誤,我無法使用XSD.exe從XML數據創建類(盡管當我的網頁正在讀取xml數據時,它工作正常)。

有更有效的方法嗎?

在此鏈接中閱讀到IXmlSerializable可能已經不存在了,盡管評論還指出了它的一些問題。 看起來可能很復雜。 如何在C#中僅反序列化XML文檔的一部分

非常感謝您的幫助。 謝謝!

使用框架來使用Atom提要。 請參見以下內容:System.ServiceModel.Syndication命名空間-msdn.microsoft.com/zh-cn/library/system.servicemodel.syndication.aspx

與其直接將反序列化xml直接反序列化為對象,不如將xml加載到XDocument對象中,然后使用XLinq查詢XDocument對象並創建需要傳遞給視圖的必要ViewModel。

對於前。

查看模型

public class FeedViewModel
{
   ..
   public FeedItem[] FeedItems { get; set; }
}

public class FeedItem
{
   public string Title { get; set; }
   public string Description { get; set; }
   public DateTime Date { get; set; }
}

在你的行動中

var feedDocument = XDocument.Load(feedUrl);

var feedItems = feedDocument.Descendants("item")
    orderby DateTime.Parse(feed.Element("pubDate").Value) descending
    select new FeedItem
    {
      Title = feed.Element("title").Value,
      Description = feed.Element("description").Value,
      Date = DateTime.Parse(feed.Element("pubDate").Value)
    }.ToArray();

return View(new FeedViewModel{ FeedItems = feedItems });

http://deepumi.wordpress.com/2010/02/21/how-to-consume-an-atom-rss-feed-using-asp-net-c-with-linq/

暫無
暫無

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

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