zoukankan      html  css  js  c++  java
  • DATATABLE转RSS

    看到有人写
    XML数据与数据集之间的相互转化

    我好象用不着XML这个,不如直接搞个RSS吧,实用些。

      1using System;
      2using System.Collections.Generic;
      3using System.Text;
      4using System.Data;
      5using Rss;
      6using System.Xml;
      7namespace buildRss
      8{
      9    class buildRss
     10    {
     11        /// <summary>
     12        /// 此类是将传入的DataTable对象进行转化为RSS对象RSSfeed
     13        /// 用writeRSS()方法输出到设备流,这里主要是输出到服务器返回流
     14        /// getRss(string fileName)方法用来将DataTable对象以RSS保存到文件中
     15        /// DataTable对象的列要求,1:ID,2:名称,3:作者,4:描述,5:连接地址
     16        /// </summary>

     17        private DataTable dt;
     18        private Rss.RssFeed rfeed;
     19        public buildRss()
     20        { }
     21        public buildRss(System.Data.DataTable DT)
     22        {
     23            dt = DT;
     24        }

     25        /// <summary>
     26        /// 将DataTable对象写入RSSfeed对象
     27        /// </summary>
     28        /// <returns></returns>

     29        private Rss.RssFeed RssFactory()
     30        {
     31            if (dt == null)
     32                throw new Exception("传入的DataTable对象为空!");
     33            if (dt.Rows.Count < 1)
     34                throw new Exception("DataTable对象中无数据!");
     35            if (dt.Columns.Count < 5)
     36                throw new Exception("传入的DataTable对象中列数不符合规定!");
     37            Rss.RssFeed rf = new RssFeed();
     38            rf.Encoding = System.Text.Encoding.GetEncoding("gb2312");
     39            rf.Version = RssVersion.RSS20;
     40            RssItem ri = new RssItem();
     41            RssChannel rc = new RssChannel();
     42            rc.Title = "Test Channel Title 1";
     43            rc.Description = "Test Channel Description 1";
     44            rc.Link = new Uri("http://www.lutoo.com");
     45            rc.PubDate = DateTime.Now;
     46            for (int i = 0; i < dt.Rows.Count;i++ )
     47            {
     48                ri.Author = dt.Rows[i][2].ToString();
     49                ri.Title = dt.Rows[i][1].ToString();
     50                ri.Description = dt.Rows[i][3].ToString();
     51                ri.Link = new Uri(dt.Rows[i][4].ToString());
     52                ri.PubDate = DateTime.Now;
     53                rc.Items.Add(ri);
     54            }

     55            rf.Channels.Add(rc);
     56            return rf;
     57        }

     58        /// <summary>
     59        /// 传入文件路径带文件名,将RSS写入该文件
     60        /// </summary>
     61        /// <param name="fileName">文件名</param>

     62        public void getRss(string fileName)
     63        {
     64            try
     65            {
     66                rfeed = this.RssFactory();
     67                rfeed.Write(fileName);
     68            }

     69            catch(Exception e)
     70            {
     71                System.Console.Out.WriteLine(e.Message.ToString());
     72            }

     73        }

     74        /// <summary>
     75        /// 返回RSS字符串
     76        /// </summary>
     77        /// <returns>返回RSS字符串</returns>

     78        public string getRss()
     79        {
     80            try
     81            {
     82                rfeed = this.RssFactory();
     83            }

     84            catch (Exception e)
     85            {
     86                System.Console.Out.WriteLine(e.Message.ToString());
     87            }

     88
     89            return rfeed.ToString();
     90        }

     91        /// <summary>
     92        ///把RSS内容写到流中
     93        /// </summary>
     94        /// <param name="stream">要写入的流,指Response.OutputStream</param>

     95        public void writeRSS(System.IO.Stream stream)
     96        {
     97            try
     98            {
     99                rfeed = this.RssFactory();
    100                rfeed.Write(stream);
    101            }

    102            catch (Exception e)
    103            {
    104                System.Console.Out.WriteLine(e.Message.ToString());
    105            }

    106        }

    107        /*RssFeed feed = new RssFeed();
    108feed.Channels.Add(channel);
    109Response.ContentType = "text/xml";
    110feed.Write(Response.OutputStream);
    111Response.End();
    112*/

    113    }

    114}
    需要RSS.NET.dll 
  • 相关阅读:
    [Clr via C#读书笔记]Cp4类型基础
    [Clr via C#读书笔记]Cp3共享程序集和强命名程
    [Clr via C#读书笔记]Cp2生成打包部署和管理应用程序和类型
    [Clr via C#读书笔记]Cp1CLR执行模型
    试用Markdown来写东西
    字符编码的总结
    常去的网站
    Click Once使用总结
    【LevelDB源码阅读】Slice
    【程序员面试金典】面试题 01.05. 一次编辑
  • 原文地址:https://www.cnblogs.com/xewnwsl2001/p/739470.html
Copyright © 2011-2022 走看看