我们可以用.aspx,.ashx文件构建xml文件,输出xml 可以通过 XmlTextWriter实例化来输出,也可以直接输出。
1.利用XmlTextWriter输出
代码
public String uid = "461";
public String UserInfo = String.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["id"] != null && Request.QueryString["id"].ToString() != "")
{
uid = Request.QueryString["id"].ToString();
}
Response.ContentType = "application/rss+xml";
Response.ContentEncoding = Encoding.UTF8;
XmlTextWriter rsswriter = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
WriteRssOpening(rsswriter);
WriteRssBody(rsswriter);
WriteRssEnding(rsswriter);
rsswriter.Flush();
Response.End();
}
/// <summary>
/// 信息标题
/// </summary>
/// <param name="rsswriter"></param>
private void WriteRssOpening(XmlTextWriter rsswriter)
{
UserBasicModelInfo info = UserBasic.GetBasicList(uid);
rsswriter.WriteStartElement("rss");
rsswriter.WriteAttributeString("version", "2.0");
rsswriter.WriteStartElement("channel");
rsswriter.WriteElementString("title", info.TrueName+"的官方博客");
rsswriter.WriteElementString("link", Application["Url"] + "/Rss.aspx?id=" + uid + "");
rsswriter.WriteElementString("description", info.TrueName + "的官方博客");
}
/// <summary>
/// 信息整体
/// </summary>
/// <param name="rsswriter"></param>
private void WriteRssBody(XmlTextWriter rsswriter)
{
DataTable GetDate = wdxt_Common.GetSomeData.GetDataNum("VW_NEWLOG", "*", "LOGSEECOMPETENCE=1 and userinfoid=" + uid + "", "addtime desc ", 100).Tables[0];
foreach (DataRow rssitem in GetDate.Rows)
{
rsswriter.WriteStartElement("item");
rsswriter.WriteElementString("title", rssitem["logtitle"].ToString());
rsswriter.WriteElementString("author", rssitem["TRUENAME"].ToString());
rsswriter.WriteElementString("link", ""+Application["Url"]+"/Log/show_" + rssitem["logid"].ToString() + "_6");
rsswriter.WriteElementString("description", rssitem["logcontent"].ToString());
rsswriter.WriteElementString("pubDate", rssitem["addtime"].ToString());
rsswriter.WriteEndElement();
}
}
private void WriteRssEnding(XmlTextWriter rsswriter)
{
rsswriter.WriteEndElement();
rsswriter.WriteEndElement();
}
public String UserInfo = String.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["id"] != null && Request.QueryString["id"].ToString() != "")
{
uid = Request.QueryString["id"].ToString();
}
Response.ContentType = "application/rss+xml";
Response.ContentEncoding = Encoding.UTF8;
XmlTextWriter rsswriter = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
WriteRssOpening(rsswriter);
WriteRssBody(rsswriter);
WriteRssEnding(rsswriter);
rsswriter.Flush();
Response.End();
}
/// <summary>
/// 信息标题
/// </summary>
/// <param name="rsswriter"></param>
private void WriteRssOpening(XmlTextWriter rsswriter)
{
UserBasicModelInfo info = UserBasic.GetBasicList(uid);
rsswriter.WriteStartElement("rss");
rsswriter.WriteAttributeString("version", "2.0");
rsswriter.WriteStartElement("channel");
rsswriter.WriteElementString("title", info.TrueName+"的官方博客");
rsswriter.WriteElementString("link", Application["Url"] + "/Rss.aspx?id=" + uid + "");
rsswriter.WriteElementString("description", info.TrueName + "的官方博客");
}
/// <summary>
/// 信息整体
/// </summary>
/// <param name="rsswriter"></param>
private void WriteRssBody(XmlTextWriter rsswriter)
{
DataTable GetDate = wdxt_Common.GetSomeData.GetDataNum("VW_NEWLOG", "*", "LOGSEECOMPETENCE=1 and userinfoid=" + uid + "", "addtime desc ", 100).Tables[0];
foreach (DataRow rssitem in GetDate.Rows)
{
rsswriter.WriteStartElement("item");
rsswriter.WriteElementString("title", rssitem["logtitle"].ToString());
rsswriter.WriteElementString("author", rssitem["TRUENAME"].ToString());
rsswriter.WriteElementString("link", ""+Application["Url"]+"/Log/show_" + rssitem["logid"].ToString() + "_6");
rsswriter.WriteElementString("description", rssitem["logcontent"].ToString());
rsswriter.WriteElementString("pubDate", rssitem["addtime"].ToString());
rsswriter.WriteEndElement();
}
}
private void WriteRssEnding(XmlTextWriter rsswriter)
{
rsswriter.WriteEndElement();
rsswriter.WriteEndElement();
}
2. 直接输出XML
代码
protected String uid = String.Empty;
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
uid = HttpContext.Current.Request.QueryString["id"].ToString();
Response.ContentType = "text/xml";
Response.Charset = "GB2312";
Response.Write(GetRSS());
}
#region
/// <summary>
/// 取得聚合文章
/// </summary>
public string GetRSS()
{
UserBasicModelInfo info = UserBasic.GetBasicList(uid);
DataSet ds = wdxt_Common.GetSomeData.GetDataNum("VW_NEWLOG", "*", "LOGSEECOMPETENCE=1 and userinfoid=" + uid + "", "addtime desc ", 100);
String strRSS = "<?xml version=\"1.0\" encoding=\"gb2312\" ?><rss version=\"2.0\">";
strRSS += "<channel>";
strRSS += "<title>" + info.TrueName + "的博客</title>";
strRSS += "<link>" + Application["Url"] + "/Myspace/Space/Rss1.aspx?id=" + uid + "</link>";
strRSS += "<description></description>";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string Logid = ds.Tables[0].Rows[i]["logid"].ToString();
string LogContent = ds.Tables[0].Rows[i]["LogContent"].ToString();
string Title = ds.Tables[0].Rows[i]["logtitle"].ToString();
String LogAddTime = ds.Tables[0].Rows[i]["Addtime"].ToString();
string truename = ds.Tables[0].Rows[i]["TrueName"].ToString();
strRSS += "<item>";
strRSS += "<title>" + Title + "</title>";
strRSS += "<link>" + Application["Url"] + "/Blog/info/" + Logid + "</link>";
strRSS += "<pubDate>" + LogAddTime + "</pubDate>";
strRSS += "<copyright>" + truename + "</copyright>";
strRSS += "<description><![CDATA[" + LogContent + "]]></description>";
strRSS += "</item>";
}
strRSS += "</channel>";
strRSS += "</rss>";
return strRSS;
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
uid = HttpContext.Current.Request.QueryString["id"].ToString();
Response.ContentType = "text/xml";
Response.Charset = "GB2312";
Response.Write(GetRSS());
}
#region
/// <summary>
/// 取得聚合文章
/// </summary>
public string GetRSS()
{
UserBasicModelInfo info = UserBasic.GetBasicList(uid);
DataSet ds = wdxt_Common.GetSomeData.GetDataNum("VW_NEWLOG", "*", "LOGSEECOMPETENCE=1 and userinfoid=" + uid + "", "addtime desc ", 100);
String strRSS = "<?xml version=\"1.0\" encoding=\"gb2312\" ?><rss version=\"2.0\">";
strRSS += "<channel>";
strRSS += "<title>" + info.TrueName + "的博客</title>";
strRSS += "<link>" + Application["Url"] + "/Myspace/Space/Rss1.aspx?id=" + uid + "</link>";
strRSS += "<description></description>";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string Logid = ds.Tables[0].Rows[i]["logid"].ToString();
string LogContent = ds.Tables[0].Rows[i]["LogContent"].ToString();
string Title = ds.Tables[0].Rows[i]["logtitle"].ToString();
String LogAddTime = ds.Tables[0].Rows[i]["Addtime"].ToString();
string truename = ds.Tables[0].Rows[i]["TrueName"].ToString();
strRSS += "<item>";
strRSS += "<title>" + Title + "</title>";
strRSS += "<link>" + Application["Url"] + "/Blog/info/" + Logid + "</link>";
strRSS += "<pubDate>" + LogAddTime + "</pubDate>";
strRSS += "<copyright>" + truename + "</copyright>";
strRSS += "<description><![CDATA[" + LogContent + "]]></description>";
strRSS += "</item>";
}
strRSS += "</channel>";
strRSS += "</rss>";
return strRSS;
}
#endregion
参考:1. 微软的CSASPNETRssFeeds
2. 我的源码