如何将带有图像网址的BBC RSS Feed保存到数据库中?

时间:2017-08-18 04:53:53

标签: c# asp.net xml rss syndication

我正在创建一个asp.net网站,用于显示来自BBC的rss feed,我正在按照我想要的方式显示在asp:DataList上显示rss,但我的问题是我不想直接显示feed从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也没有问题。 我这样做是因为如果Feed服务器或新闻服务器关闭或没有响应,那么我的网站没有受到影响。有谁知道如何解决这个问题?任何帮助将不胜感激。谢谢!

0 个答案:

没有答案