澳门永利官网自家好象用不着XML这几个,由此相应的底层框架 

前言:

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

前天为 秋色园 增加了Rss  输出,由此相应的最底层框架 CYQ.Data 也增多了奥德赛ss类,那里单独抽出来重新写了个通用LX570ss类,独成一篇。

自己好象用不着XML那一个,不比直接搞个逍客SS吧,实用些。

安德拉ss测试输出地址可知:

  1澳门永利官网 1using System;
  2澳门永利官网 2using System.Collections.Generic;
  3澳门永利官网 3using System.Text;
  4澳门永利官网 4using System.Data;
  5澳门永利官网 5using Rss;
  6澳门永利官网 6using System.Xml;
  7澳门永利官网 7namespace buildRss
  8澳门永利官网 8澳门永利官网 9澳门永利官网 10{
  9澳门永利官网 11    class buildRss
 10澳门永利官网 12澳门永利官网 13    澳门永利官网 14{
 11澳门永利官网 15澳门永利官网 16        /**//// <summary>
 12澳门永利官网 17        /// 此类是将盛传的DataTable对象开展转账为SportageSS对象LacrosseSSfeed
 13澳门永利官网 18        /// 用write卡宴SS()方法输出到设备流,那里最主假设出口到服务器重返流
 14澳门永利官网 19        /// get猎豹CS6ss(string fileName)方法用来将DataTable对象以奇骏SS保存到文件中
 15澳门永利官网 20        /// DataTable对象的列须求,一:ID,二:名称,③:作者,四:描述,5:连接地址
 16澳门永利官网 21        /// </summary>
 17澳门永利官网 22        private DataTable dt;
 18澳门永利官网 23        private Rss.RssFeed rfeed;
 19澳门永利官网 24        public buildRss()
 20澳门永利官网 25澳门永利官网 26        澳门永利官网 27{ }
 21澳门永利官网 28        public buildRss(System.Data.DataTable DT)
 22澳门永利官网 29澳门永利官网 30        澳门永利官网 31{
 23澳门永利官网 32            dt = DT;
 24澳门永利官网 33        }
 25澳门永利官网 34澳门永利官网 35        /**//// <summary>
 26澳门永利官网 36        /// 将DataTable对象写入RubiconSSfeed对象
 27澳门永利官网 37        /// </summary>
 28澳门永利官网 38        /// <returns></returns>
 29澳门永利官网 39        private Rss.RssFeed RssFactory()
 30澳门永利官网 40澳门永利官网 41        澳门永利官网 42{
 31澳门永利官网 43            if (dt == null)
 32澳门永利官网 44                throw new Exception(“传入的DataTable对象为空!”);
 33澳门永利官网 45            if (dt.Rows.Count < 1)
 34澳门永利官网 46                throw new Exception(“DataTable对象中无多少!”);
 35澳门永利官网 47            if (dt.Columns.Count < 5)
 36澳门永利官网 48                throw new Exception(“传入的DataTable对象中列数不符合规定!”);
 37澳门永利官网 49            Rss.RssFeed rf = new RssFeed();
 38澳门永利官网 50            rf.Encoding = System.Text.Encoding.GetEncoding(“gb2312”);
 39澳门永利官网 51            rf.Version = RssVersion.RSS20;
 40澳门永利官网 52            RssItem ri = new RssItem();
 41澳门永利官网 53            RssChannel rc = new RssChannel();
 42澳门永利官网 54            rc.Title = “Test Channel Title 1”;
 43澳门永利官网 55            rc.Description = “Test Channel Description 1”;
 44澳门永利官网 56            rc.Link = new Uri(“http://www.lutoo.com“);
 45澳门永利官网 57            rc.PubDate = DateTime.Now;
 46澳门永利官网 58            for (int i = 0; i < dt.Rows.Count;i++ )
 47澳门永利官网 59澳门永利官网 60            澳门永利官网 61{
 48澳门永利官网 62                ri.Author = dt.Rows[i][2].ToString();
 49澳门永利官网 63                ri.Title = dt.Rows[i][1].ToString();
 50澳门永利官网 64                ri.Description = dt.Rows[i][3].ToString();
 51澳门永利官网 65                ri.Link = new Uri(dt.Rows[i][4].ToString());
 52澳门永利官网 66                ri.PubDate = DateTime.Now;
 53澳门永利官网 67                rc.Items.Add(ri);
 54澳门永利官网 68            }
 55澳门永利官网 69            rf.Channels.Add(rc);
 56澳门永利官网 70            return rf;
 57澳门永利官网 71        }
 58澳门永利官网 72澳门永利官网 73        /**//// <summary>
 59澳门永利官网 74        /// 传入文件路径带文件名,将KoleosSS写入该公文
 60澳门永利官网 75        /// </summary>
 61澳门永利官网 76        /// <param name=”fileName”>文件名</param>
 62澳门永利官网 77        public void getRss(string fileName)
 63澳门永利官网 78澳门永利官网 79        澳门永利官网 80{
 64澳门永利官网 81            try
 65澳门永利官网 82澳门永利官网 83            澳门永利官网 84{
 66澳门永利官网 85                rfeed = this.RssFactory();
 67澳门永利官网 86                rfeed.Write(fileName);
 68澳门永利官网 87            }
 69澳门永利官网 88            catch(Exception e)
 70澳门永利官网 89澳门永利官网 90            澳门永利官网 91{
 71澳门永利官网 92                System.Console.Out.WriteLine(e.Message.ToString());
 72澳门永利官网 93            }
 73澳门永利官网 94        }
 74澳门永利官网 95澳门永利官网 96        /**//// <summary>
 75澳门永利官网 97        /// 返回RSS字符串
 76澳门永利官网 98        /// </summary>
 77澳门永利官网 99        /// <returns>返回RSS字符串</returns>
 78澳门永利官网 100        public string getRss()
 79澳门永利官网 101澳门永利官网 102        澳门永利官网 103{
 80澳门永利官网 104            try
 81澳门永利官网 105澳门永利官网 106            澳门永利官网 107{
 82澳门永利官网 108                rfeed = this.RssFactory();
 83澳门永利官网 109            }
 84澳门永利官网 110            catch (Exception e)
 85澳门永利官网 111澳门永利官网 112            澳门永利官网 113{
 86澳门永利官网 114                System.Console.Out.WriteLine(e.Message.ToString());
 87澳门永利官网 115            }
 88澳门永利官网 116
 89澳门永利官网 117            return rfeed.ToString();
 90澳门永利官网 118        }
 91澳门永利官网 119澳门永利官网 120        /**//// <summary>
 92澳门永利官网 121        ///把卡宴SS内容写到流中
 93澳门永利官网 122        /// </summary>
 94澳门永利官网 123        /// <param name=”stream”>要写入的流,指Response.OutputStream</param>
 95澳门永利官网 124        public void writeRSS(System.IO.Stream stream)
 96澳门永利官网 125澳门永利官网 126        澳门永利官网 127{
 97澳门永利官网 128            try
 98澳门永利官网 129澳门永利官网 130            澳门永利官网 131{
 99澳门永利官网 132                rfeed = this.RssFactory();
100澳门永利官网 133                rfeed.Write(stream);
101澳门永利官网 134            }
102澳门永利官网 135            catch (Exception e)
103澳门永利官网 136澳门永利官网 137            澳门永利官网 138{
104澳门永利官网 139                System.Console.Out.WriteLine(e.Message.ToString());
105澳门永利官网 140            }
106澳门永利官网 141        }
107澳门永利官网 142澳门永利官网 143        /**//*RssFeed feed = new RssFeed();
108澳门永利官网 144feed.Channels.Add(channel);
109澳门永利官网 145Response.ContentType = “text/xml”;
110澳门永利官网 146feed.Write(Response.OutputStream);
111澳门永利官网 147Response.End();
112澳门永利官网 148*/
113澳门永利官网 149    }
114澳门永利官网 150}

主站:http://www.cyqdata.com/rss  

需要RSS.NET.dll 

用户:http://www.cyqdata.com/cnblogs/rss

 

 

实际RubiconSS是什么样也就不多介绍了,相关的语法和资料,可详细:w3school

Tiggoss 文档示例:

澳门永利官网 151澳门永利官网 152

<?xml version=”1.0″ encoding=”utf-8″ ?>
<rss version=”2.0″>
<channel>
  <title>Autumn Gurden Page</title>
  <link>http://cyqdata.com&lt;/link&gt;
  <description>Autumn Park is QBlog the official site, created by the passing autumn, based on the framework developed cyqdata data layer supports multiple users, multiple languages, multiple databases(access,mssql,oracle), directory level url and other powerful blog system</description>
  <item>
    <title>RSS Tutorial</title>
    <link>http://www.cyqdata.com/rss&lt;/link&gt;
    <description>New RSS tutorial on cyqdata.com</description>
  </item>
  <item>
    <title>XML Tutorial</title>
    <link>http://www.cyqdata.com/cyq1162/rss&lt;/link&gt;
    <description>New XML tutorial on cyqdata.com</description>
  </item>
</channel>
</rss> 

从示例文书档案上看,本田CR-Vss的骨干组成:

1:channel一个

2:channel属性若干,有必选和N多可选。

叁:channel下有N个Item项,Item也有好多选项。

 

 

为此,简单来讲,只要输出以上格式的xml,不难的逍客ss也即成功了,上面进行代码实战。

 

1:实体类创制

要写成完全点的Havalss版,费劲的不是要想怎么输出,而是要清楚KugaSS都某些什么性质,即便基本文书档案示例上看非凡不难,

不过达成其属性却不是那么一点半点的,为此,prop贰个多少个敲属性的时候,就费了自个儿无数时刻

上边上自身辛劳敲写的实体类:

1:RssChannel

澳门永利官网 153澳门永利官网 154RssChannel

public class RssChannel
    {
        #region 必选
        private string _Title;
        /// <summary>
        /// 定义频道的标题
        /// </summary>
        public string Title
        {
            get
            {
                return _Title;
            }
            set
            {
                _Title = value;
            }
        }
        private string _Link;
        /// <summary>
        /// 定义指向频道的超链接
        /// </summary>
        public string Link
        {
            get
            {
                return _Link;
            }
            set
            {
                _Link = value;
            }
        }
        private string _Description;
        /// <summary>
        /// 描述频道
        /// </summary>
        public string Description
        {
            get
            {
                return _Description;
            }
            set
            {
                _Description = value;
            }
        }
        #endregion

        #region 可选
        private string _Category;
        /// <summary>
        /// 为 feed 定义所属的多少个或多少个档次
        /// </summary>
        public string Category
        {
            get
            {
                return _Category;
            }
            set
            {
                _Category = value;
            }
        }
        private string _Cloud;
        /// <summary>
        /// 注册进程,以获取 feed 更新的即时文告
        /// </summary>
        public string Cloud
        {
            get
            {
                return _Cloud;
            }
            set
            {
                _Cloud = value;
            }
        }
        private string _Copyright;
        /// <summary>
        /// 告知版权资料
        /// </summary>
        public string Copyright
        {
            get
            {
                return _Copyright;
            }
            set
            {
                _Copyright = value;
            }
        }
        private string _Docs;
        /// <summary>
        /// 规定针对当前 哈弗SS 文件所用格式表明的 URubiconL
        /// </summary>
        public string Docs
        {
            get
            {
                return _Docs;
            }
            set
            {
                _Docs = value;
            }
        }
        private string _Generator;
        /// <summary>
        /// 规定针对当前 卡宴SS 文件所用格式表明的 UPAJEROL
        /// </summary>
        public string Generator
        {
            get
            {
                return _Generator;
            }
            set
            {
                _Generator = value;
            }
        }
        private string _Language = “zh-cn”;
        /// <summary>
        /// 规定编写制定 feed 所用的言语
        /// </summary>
        public string Language
        {
            get
            {
                return _Language;
            }
            set
            {
                _Language = value;
            }
        }

        private string _LastBuildDate;
        /// <summary>
        /// 定义 feed 内容的末段修改日期
        /// </summary>
        public string LastBuildDate
        {
            get
            {
                return _LastBuildDate;
            }
            set
            {
                _LastBuildDate = value;
            }
        }
        private string _ManagingEditor;
        /// <summary>
        /// 定义 feed 内容编排的电子邮件地址
        /// </summary>
        public string ManagingEditor
        {
            get
            {
                return _ManagingEditor;
            }
            set
            {
                _ManagingEditor = value;
            }
        }
        private string _PubDate;
        /// <summary>
        /// 为 feed 的内容定义最终发布日期
        /// </summary>
        public string PubDate
        {
            get
            {
                return _PubDate;
            }
            set
            {
                _PubDate = value;
            }
        }
        private string _Rating;
        /// <summary>
        /// feed 的 PICS 级别
        /// </summary>
        public string Rating
        {
            get
            {
                return _Rating;
            }
            set
            {
                _Rating = value;
            }
        }
        private string _SkipDays;
        /// <summary>
        /// 规定忽略 feed 更新的天
        /// </summary>
        public string SkipDays
        {
            get
            {
                return _SkipDays;
            }
            set
            {
                _SkipDays = value;
            }
        }
        private string _SkipHours;
        /// <summary>
        /// 规定忽略 feed 更新的钟点
        /// </summary>
        public string SkipHours
        {
            get
            {
                return _SkipHours;
            }
            set
            {
                _SkipHours = value;
            }
        }
        private string _TextInput;
        /// <summary>
        /// 规定应当与 feed 一同彰显的文件输入域
        /// </summary>
        public string TextInput
        {
            get
            {
                return _TextInput;
            }
            set
            {
                _TextInput = value;
            }
        }
        private string _Ttl;
        /// <summary>
        /// 钦赐从 feed 源更新此 feed 在此之前,feed 可被缓存的分钟数
        /// </summary>
        public string Ttl
        {
            get
            {
                return _Ttl;
            }
            set
            {
                _Ttl = value;
            }
        }
        private string _WebMaster;
        /// <summary>
        /// 定义此 feed 的 web 管理员的电子邮件地址
        /// </summary>
        public string WebMaster
        {
            get
            {
                return _WebMaster;
            }
            set
            {
                _WebMaster = value;
            }
        }
        #endregion

       
private string _RssImage;
        /// <summary>
        /// 定义此 feed 的 图片Logo
        /// </summary>
        public string RssImage
        {
            get
            {
                return _RssImage;
            }
            set
            {
                _RssImage = value;
            }
        }
        private List<RssItem> _Items = new List<RssItem>();
        public List<RssItem> Items
        {
            get
            {
                return _Items;
            }
            set
            {
                _Items = value;
            }
        }
    }

2:RssItem

澳门永利官网 155澳门永利官网 156RssItem

public class RssItem
    {
        #region 必选
        private string _Title;
        /// <summary>
        /// 定义频道的标题
        /// </summary>
        public string Title
        {
            get
            {
                return _Title;
            }
            set
            {
                _Title = value;
            }
        }
        private string _Link;
        /// <summary>
        /// 定义指向频道的超链接
        /// </summary>
        public string Link
        {
            get
            {
                return _Link;
            }
            set
            {
                _Link = value;
            }
        }
        private string _Description;
        /// <summary>
        /// 描述频道
        /// </summary>
        public string Description
        {
            get
            {
                return _Description;
            }
            set
            {
                _Description = value;
            }
        }
        #endregion

        #region 可选
        private string _Category;
        /// <summary>
        /// 为 feed 定义所属的2个或七个品类
        /// </summary>
        public string Category
        {
            get
            {
                return _Category;
            }
            set
            {
                _Category = value;
            }
        }
        private string _Author;
        /// <summary>
        /// 规定项目小编的电子邮件地址
        /// </summary>
        public string Author
        {
            get
            {
                return _Author;
            }
            set
            {
                _Author = value;
            }
        }
        private string _Comments;
        /// <summary>
        /// 允许项目连接受有关此项指标注释(文件)
        /// </summary>
        public string Comments
        {
            get
            {
                return _Comments;
            }
            set
            {
                _Comments = value;
            }
        }
        private string _Enclosure;
        /// <summary>
        /// 允许将三个媒体文件导入七个项中
        /// </summary>
        public string Enclosure
        {
            get
            {
                return _Enclosure;
            }
            set
            {
                _Enclosure = value;
            }
        }
        private string _Guid;
        /// <summary>
        /// 为 项目概念四个唯一的标识符
        /// </summary>
        public string Guid
        {
            get
            {
                return _Guid;
            }
            set
            {
                _Guid = value;
            }
        }
        private string _PubDate;
        /// <summary>
        ///定义此项目标末段发布日期
        /// </summary>
        public string PubDate
        {
            get
            {
                return _PubDate;
            }
            set
            {
                _PubDate = value;
            }
        }
        private string _Source;
        /// <summary>
        /// 为此项目内定2个第一方出自
        /// </summary>
        public string Source
        {
            get
            {
                return _Source;
            }
            set
            {
                _Source = value;
            }
        }
        #endregion
    }

3:RssImage–图片Logo输出

澳门永利官网 157澳门永利官网 158RssImage

public class RssImage
    {
        #region 必选
        private string _Url;
        /// <summary>
        /// 图片地址
        /// </summary>
        public string Url
        {
            get
            {
                return _Url;
            }
            set
            {
                _Url = value;
            }
        }
        private string _Title;
        /// <summary>
        /// 图片题目
        /// </summary>
        public string Title
        {
            get
            {
                return _Title;
            }
            set
            {
                _Title = value;
            }
        }
        private string _Link;
        /// <summary>
        /// 提供图片的站点链接
        /// </summary>
        public string Link
        {
            get
            {
                return _Link;
            }
            set
            {
                _Link = value;
            }
        }
        private string _Description;
        /// <summary>
        /// 描述频道
        /// </summary>
        public string Description
        {
            get
            {
                return _Description;
            }
            set
            {
                _Description = value;
            }
        }
        #endregion
    }

 

最有技术含量的,正是地方三个实体类的敲入了,看着w三规范的习性,一个贰个的敲,很劳苦。

 

OK,有了多少个的实体类,接下的政工变的卓殊简单了。

 

2:创建简洁LANDSS类

一:新建猎豹CS6ss类–构造函数非常不难的伊始化了一下主干数据。

澳门永利官网 159澳门永利官网 160

    public class Rss
    {
        XmlDocument rssDoc;

        public RssChannel channel;
        public Rss()
        {
            rssDoc = new XmlDocument();
            rssDoc.LoadXml(“<?xml version=\”1.0\” encoding=\”utf-8\”?><rss version=\”2.0\”><channel></channel></rss>”);
            channel = new RssChannel();
        }
    }

二:成立生成翼虎SS–反射实体创造xml成分。

澳门永利官网 161澳门永利官网 162

        private void BuildRss()
        {
            XmlNode cNode = rssDoc.DocumentElement.ChildNodes[0];//取得channel元素
            ForeachCreateChild(cNode, channel);//Channel处理
            if (channel.RssImage != null)
            {
                ForeachCreateChild(Create(“image”, null, cNode), channel.RssImage);//Channel-Image处理
            }
            if (channel.Items.Count > 0)
            {
                foreach (RssItem item in channel.Items)
                {
                    ForeachCreateChild(Create(“item”, null,cNode), item);//Channel-Items处理
                }
            }
        }

函数分解一:创造节点成分

澳门永利官网 163澳门永利官网 164

        private XmlNode Create(string name,string value,XmlNode parent)
        {
            XmlElement xNode=rssDoc.CreateElement(name);
            if (!string.IsNullOrEmpty(value))
            {
                xNode.InnerXml = value;
            }
            parent.AppendChild(xNode as XmlNode);
            return xNode as XmlNode;
        }

函数分解2:反射循环成立子节点

澳门永利官网 165澳门永利官网 166

        private void ForeachCreateChild(XmlNode parent, object obj)
        {
            object propValue = null;
            PropertyInfo[] pis = obj.GetType().GetProperties();
            for (int i = 0; i < pis.Length; i++)
            {
                if (pis[i].Name == “Items” || pis[i].Name==”Image”)
                {
                    continue;
                }
                propValue = pis[i].GetValue(obj, null);
                if (propValue == null || propValue == DBNull.Value)
                {
                    continue;
                }
                if (pis[i].Name == “Description”)
                {
                    propValue = “<![CDATA[” + propValue.ToString() + “]]>”;
                }
                Create(pis[i].Name.Substring(0, 1).ToLower() + pis[i].Name.Substring(1), propValue.ToString(), parent);
            }
        }

3:输出RSS

        public string OutXml
        {
            get
            {
                BuildRss();
                return rssDoc.OuterXml;
            }
        }

 

现今,三个非常不难的凯雷德SS类就完了了,小小数了弹指间,PAJEROSS类壹共花了6陆代码[只要数上实体类,那代码行就一定的耸人听别人说了],近日在保持出色阅读格式下也只可以把代码简化到那种程度了。

 

 3:测试使用示例代码

 1:怎么选择,那么些一定简单了

澳门永利官网 167澳门永利官网 168

    public class RssDemo
    {
        public string GetRss()
        {
            Rss rss = new Rss();
            rss.channel.Title = “秋色园”;
            rss.channel.Link = “http://www.cyqdata.com“;
            rss.channel.Description = “秋色园-QBlog-Power by Blog.CYQ”;
            for (int i = 0; i < 10; i++)
            {
                RssItem item = new RssItem();
                item.Title = string.Format(“第{0}项”, i);
                item.Link = “http://www.cyqdata.com“;
                item.Description = “相当长不短的内容”;

               
rss.channel.Items.Add(item);
            }
            return rss.OutXml;
        }
    }

 

时至前日,本文就过逝了,代码太短,大伙可能刷的1眼就看完了,不过打完收工也到时间了。

 

最终:好久没写作品了,今日抽点日子写成壹篇,希望本文对大伙有点支持,多谢协理~

PS:遗闻点一下推荐会有13个园豆,喜欢麻烦点一下“推荐”,thank you very
much!!