在上一篇使用精靈完成的內容,
這次改成使用codebehind來練習好用的XmlTextWriter
不只是使用在Rss,還有產出最常需要使用的**GooleSiteMaps**格式文件
首先加入:
using System.Xml;
using System.Text;
並且清除原本要輸出的內容與重新設置輸出的內容型別
Response.Clear();
Response.ContentType = "text/xml";//設定http mime
就可以開始寫入RSS規範的外框架
//產生RSS檔頭開始
xmlTw.WriteStartDocument();
xmlTw.WriteStartElement("rss");
xmlTw.WriteAttributeString("version", "2.0");
xmlTw.WriteStartElement("channel");
xmlTw.WriteElementString("title", "鐵人測試");
xmlTw.WriteElementString("link", "http://www.example.com/");
xmlTw.WriteElementString("description", "手寫也能完成");
xmlTw.WriteElementString("ttl", "60");//time to live資料生存時間
//產生RSS檔頭結束
接著就是使用SqlDataReader的Read()方法反覆撈出資料:
using (SqlConnection nowConnection = new SqlConnection(strConnection))//連線資料庫
{
nowConnection.Open();
using (SqlCommand comm = new SqlCommand("SQL string", nowConnection))
{
SqlDataReader reader = comm.ExecuteReader();
while (reader.Read())
{
xmlTw.WriteStartElement("item");
xmlTw.WriteElementString("title", reader.GetString(1));//參數代表欄位的位置
xmlTw.WriteElementString("description", reader.GetString(2));
xmlTw.WriteElementString("link", "http://www.example.com/Content.aspx?Dataid=" + reader.GetInt32(0));
xmlTw.WriteElementString("pubDate", reader.GetDateTime(3).ToString("r"));
xmlTw.WriteEndElement();
}
}
}
使用到SqlDataReader的GetXXX方法可以取出參數對應的資料欄位並轉換型態(欄位順序如果變更就會出錯唷!!!)
千萬要記得!!!有使用到WriteStartXXX的部分就要**『最後』**記得按順序補上WriteEndXXX
xmlTw.WriteEndElement();
xmlTw.WriteEndElement();
xmlTw.WriteEndDocument();
xmlTw.Flush();
xmlTw.Close();
Response.End();
小小練習同時也學習怎樣的使用方式要留意那些地方!
今天突然忙著幫朋友買零件組一台新電腦.....親自動手好累!