我的问题是,我继承了一个网站的推出,该网站上有一个Twitter Feed脚本作为页面上的绝对页脚。政府已经决定他们不希望饲料中包含任何转推或@mentions。我可以通过Atom RSS看到Feed正在聚合。我试图改变搜索条件,以及C#代码中的twitter URL,整个网站崩溃。
不幸的是,我对C#完全不熟悉,所以我修改这段代码的能力最多也是有限的。
该网站的构建包括页眉,页脚,推特栏等
此外,该网站的预计发布时间是今天晚上在COB,所以从头开始起草另一个插件并不是一个真正的选择。
使用此代码调用该页面的代码(代码缺少其开始和结束注释括号,因此它将显示在此处):
com.omniupdate.div label="ticker" path="/z-omniupdate/fakes/bfeo/2012/ticker.html"
bf2012:ticker runat="server"
/com.omniupdate.div
CSS是:
#ticker{
width: 100%;
height: 43px;
border-top: 1px solid #939241;
background: #bdcc2a url('/bfeo/2012/img/tweet-bg.gif') 0 0 repeat-x;
background: -moz-linear-gradient(#bdcc2a, #a9b625);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#a9b625), to(#e4c595));
background: -webkit-linear-gradient(#bdcc2a, #a9b625);
background: -o-linear-gradient(#bdcc2a, #a9b625);
position:fixed;
z-index: 1000;
bottom: 0;
}
#ticker p{
font-size: 15px;
color: #fff;
text-transform: uppercase;
float: left;
line-height: 43px;
margin-right: 10px;
}
.ticker-engage {
list-style: none;
padding: 0;
margin: 8px 0 0 0;
width: 108px;
height: 28px;
float: left;
}
.ticker-engage li{
display: inline;
}
.ticker-engage li a{
height: 28px;
width: 28px;
text-indent: -9999px;
float: left;
margin: 0 2px 0 0;
}
.ticker-engage li a.twitter{
background: url('/bfeo/2012/img/twitter-sm.png') 0 0 no-repeat;
}
.ticker-engage li a.facebook{
background: url('/bfeo/2012/img/facebook-sm.png') 0 0 no-repeat;
}
.ticker-engage li a.youtube{
background: url('/bfeo/2012/img/youtube-sm.png') 0 0 no-repeat;
}
#tweetlist{
list-style: none;
padding: 7px 20px 0 20px;
height: 36px;
width: 666px;
float: left;
background: url('/bfeo/2012/img/tweet-bg.gif') 0 0 repeat-x;
background: -moz-linear-gradient(#aab726, #98a322);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#aab726), to(#98a322));
background: -webkit-linear-gradient(#aab726, #98a322);
background: -o-linear-gradient(#aab726, #98a322);
font-size: 12px;
}
#tweetlist li{
display: inline;
}
#tweetlist li a:link, #tweetlist li a:visited{
color: #fff;
text-decoration: none;
font-weight: normal;
}
#tweetlist li a:hover, #tweetlist li a:focus{
text-decoration: underline;
}
#tweetlist li span{
color: #ffe400;
}
Ticker.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ticker.ascx.cs" Inherits="bf_controls_ticker" %>
<div id="ticker">
<div class="wrapper clearfix">
<p>Engage with us</p>
<ul class="ticker-engage">
<li><a class="facebook" target="_blank" href="http://www.facebook.com/booththinking">
Facebook</a></li>
<li><a class="twitter" target="_blank" href="http://twitter.com/booththinking">Twitter</a></li>
<li><a class="youtube" target="_blank" href="http://www.youtube.com/user/BoothThinking">
Youtube</a></li>
</ul>
<form id="form1" runat="server">
<div>
<ul id="tweetlist">
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</ul>
</div>
</form>
</div>
</div>
ticker.ascx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml;
using System.Text;
public partial class bf_controls_ticker : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(HttpGet("http://search.twitter.com/search.atom?q=booththinking"));
XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("at", "http://www.w3.org/2005/Atom");
ns.AddNamespace("twitter", "http://api.twitter.com/");
XmlNodeList entries = doc.DocumentElement.SelectNodes("//at:entry", ns);
//Response.Write(entries.Count);
StringBuilder sb = new StringBuilder();
foreach (XmlNode node in entries)
{
sb.Append(String.Format("<li><span>{2}:</span> <a href=\"{0}\">{1}</a></li>", node.ChildNodes[2].Attributes["href"].Value, node.ChildNodes[3].InnerText, node.LastChild.FirstChild.InnerText.Split(' ')[0]));
}
Literal1.Text = sb.ToString();
}
private string HttpGet(string URI)
{
System.Net.WebRequest req = System.Net.WebRequest.Create(URI);
System.Net.WebResponse resp = req.GetResponse();
if (resp == null) return null;
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
string responsexml = sr.ReadToEnd().Trim();
sr.Close();
return responsexml;
}
}
答案 0 :(得分:1)
如果我理解正确,你可以检查你想要跳过的模式的字符串。
在你的每个循环中尝试这样的事情:
foreach (XmlNode node in entries)
{
var content = node.SelectSingleNode("at:content", ns).InnerText;
if(!content.ToLower().Contains("@somename"))
{
sb.Append(String.Format("<li><span>{2}:</span> <a href=\"{0}\">{1}</a></li>", node.ChildNodes[2].Attributes["href"].Value, node.ChildNodes[3].InnerText, node.LastChild.FirstChild.InnerText.Split(' ')[0]));
}
}
查看更复杂模式匹配的正则表达式