Как сохранить RSS-канал BBC с изображениями в базу данных?

Я создаю веб-сайт asp.net для отображения RSS-канала от BBC, я делаю так, как я хочу, чтобы я показываю RSS-канал на asp:DataList, но моя проблема в том, что я не хочу показывать канал напрямую из XML документ, я хочу сохранить его сначала в моей базе данных, а затем показать его на моем сайте с помощью Datalist. Мой старый код

<asp:DataList ID="DataList1" runat="server" DataSourceID="XmlDataSource1">
  <ItemTemplate>
<div class="jumbotron">
<h2><%# XPath("title") %></h2>
<br />
<h3><%# XPath("pubDate") %></h3>
<br />
<h3><%# XPath("description") %></h3>
<br />
<asp:Repeater runat="server" ID="_subitemsRepeater"
  EnableViewState="false"
  DataSource='<%# XPathSelect("media:thumbnail", XmlNamespaceManager) %>'>
  <ItemTemplate>
    <img src="<%# ((System.Xml.XmlNode)Container.DataItem).Attributes["url"].Value %>" />
    <br />
  </ItemTemplate>
  </asp:Repeater>
  <br />
  <a class="btn btn-primary btn-lg" target="_blank" href="<%# XPath("link") %>">Read More On This Story</a>
  </div>
  <hr />
</ItemTemplate>
</asp:DataList>
<asp:XmlDataSource ID="XmlDataSource1" runat="server"
DataFile="http://feeds.bbci.co.uk/news/education/rss.xml"
XPath="rss/channel/item" />

Код C# находится на странице загрузки

public partial class _Default : Page
{
protected XmlNamespaceManager XmlNamespaceManager { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    XmlNamespaceManager =  new     XmlNamespaceManager(XmlDataSource1.GetXmlDocument().NameTable);
 XmlNamespaceManager.AddNamespace("media", "http://search.yahoo.com/mrss/");
}

}

и мой новый код:

       FileWebRequest rssFeed = (FileWebRequest)WebRequest.Create(FeedURL);
       // DataSet rssData = new DataSet();
       //read the xml from the stream of the web request

        XDocument xd =     XDocument.Load(rssFeed.GetResponse().GetResponseStream());
        XNamespace media = "http://feeds.mashable.com/Mashable?format=xml";
        foreach (var feed in xd.Descendants("item"))
        {
            string title = feed.Element("title").Value.ToString();
            string description = feed.Element("description").Value.ToString();
            string link = feed.Element("link").Value.ToString();
            DateTime pubdate = DateTime.Parse(feed.Element("pubDate").Value);
            string thumb = (string)feed.Element(media + "thumbnail") != null ? (string)feed.Element(media + "thumbnail").Attribute("url").Value.ToString() : "file:///c:/No_Image.png";
            string connection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();
            SqlConnection NewCon = new SqlConnection(connection);
            NewCon.Open();
            SqlCommand NewCMD = new SqlCommand(TableName + "_Proc", NewCon);
            NewCMD.CommandType = CommandType.StoredProcedure;
            NewCMD.Parameters.AddWithValue("@title", title);
            NewCMD.Parameters.AddWithValue("@description", description);
            NewCMD.Parameters.AddWithValue("@link", link);
            NewCMD.Parameters.AddWithValue("@pubdate", pubdate);
            NewCMD.Parameters.AddWithValue("@thumb", thumb);
            NewCMD.ExecuteNonQuery();
            NewCon.Close();
        }   

в этом коде проблема с изображениями, что он возвращает мне NoImage.jpg каждый раз, когда я подключен к Интернету. Я думаю, что нет никаких проблем с NameSpace тоже. Я делаю это потому, что если сервер подачи или сервер новостей отключился или не отвечает, то мой веб-сайт не действует. Кто-нибудь знает, как решить эту проблему? Любая помощь будет оценена. Спасибо!

0 ответов

Другие вопросы по тегам