Как сохранить 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 тоже. Я делаю это потому, что если сервер подачи или сервер новостей отключился или не отвечает, то мой веб-сайт не действует. Кто-нибудь знает, как решить эту проблему? Любая помощь будет оценена. Спасибо!