1

ボタンをクリックすると、Get メソッドを使用して別の Web サイトから xml データを取得する MVC Web サイトがあります。次に、この XML の一部を Web ページに表示する必要があります。

私の現在のアプローチは、XML をオブジェクトにデシリアライズし、そのオブジェクトをビューに渡すことです。これにより、適切なデータが取得されます。

私の問題は、クラスが XML データと完全には一致しないことです (すべての要素/属性/その他が含まれているわけではありません)。データが長すぎて、要素と属性が多すぎるため、すべてをクラスに書き込みたくありません。また、データに何らかのエラーがあるため、XSD.exe を使用して XML データからクラスを作成できませんでした (ただし、Web ページが読み取っているときに xml データは正常に機能します)。

これを行うより効率的な方法はありますか?

コメントにはいくつかの問題も指摘されていますが、このリンクを読んでください。そして、それはかなり複雑なようです。 C# で XML ドキュメントの一部のみを逆シリアル化する方法

あなたの助けに感謝します。ありがとう!

4

2 に答える 2

0

アトム フィード 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/

于 2012-06-26T09:36:37.930 に答える
0

フレームワークを使用して Atom フィードを使用します。以下を参照してください: System.ServiceModel.Syndication 名前空間 - msdn.microsoft.com/en-us/library/system.servicemodel.syndication.aspx

于 2012-06-26T07:21:36.480 に答える