iT邦幫忙

DAY 21
0

給學弟的ASP.NET網頁學習經驗系列 第 21

ASP.NET學習經驗#21----產生XML內容的XmlTextWriter

  • 分享至 

  • xImage
  •  

在上一篇使用精靈完成的內容,

這次改成使用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();

小小練習同時也學習怎樣的使用方式要留意那些地方!

今天突然忙著幫朋友買零件組一台新電腦.....親自動手好累!


上一篇
ASP.NET學習經驗#20----Rss如何產出?老前輩Repeater:我幫你
下一篇
ASP.NET學習經驗#22----CheckBoxList不貼心,學習使用自訂控制項
系列文
給學弟的ASP.NET網頁學習經驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言