DATATABLE转RSS
看到有人写
XML数据与数据集之间的相互转化
我好象用不着XML这个,不如直接搞个RSS吧,实用些。
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Data;
5
using Rss;
6
using System.Xml;
7
namespace 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();
108
feed.Channels.Add(channel);
109
Response.ContentType = "text/xml";
110
feed.Write(Response.OutputStream);
111
Response.End();
112
*/
113
}
114
}
需要RSS.NET.dll
using System;2
using System.Collections.Generic;3
using System.Text;4
using System.Data;5
using Rss;6
using System.Xml;7
namespace buildRss8
{9
class buildRss10
{11
/// <summary>12
/// 此类是将传入的DataTable对象进行转化为RSS对象RSSfeed13
/// 用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
try65
{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
try81
{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
try98
{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();108
feed.Channels.Add(channel);109
Response.ContentType = "text/xml";110
feed.Write(Response.OutputStream);111
Response.End();112
*/113
}114
}


浙公网安备 33010602011771号