CozyRSS开发记录18-番外之Atom1.0的支持

1、对CozyRSS.Syndication批判一番

由于我工作的主要开发语言是c++,所以会看到我的c#代码写得非常朴素,很多语法糖都没有用上。Cozy的第三顺位开发MaxTan(星爷)看了CozyRSS.Syndication的代码后,觉得来一个大改造。我们来看一下星爷的改动吧!

2、利用反射自动解析xml

首先,我把rss的xml的model定义出来了,里面每一个成员变量都是对应上xml的标签的。那么,自然可以不用写标签名了,星爷的代码如下:

3、支持Atom1.0

跟rss2.0的支持一样,定义好model就可以解析xml了。但是,我们为了外面使用方便,让两种格式解析完后,返回相同的model。

先是根据xml的标签,区分协议来解析,然后将model转换:

转换也不麻烦:

4、单元测试

星爷不愧是专业的.NET程序员,代码也是有配一个单元测试。使用的是:

Microsoft.VisualStudio.TestTools.UnitTesting

具体如下:

目前还不详细,先这样吧。

CozyRSS开发记录18-番外之Atom1.0的支持的更多相关文章

  1. CozyRSS开发记录12-MVVM,绑定RSS源和数据

    CozyRSS开发记录12-MVVM,绑定RSS源和数据 1.引入MvvmLight MVVM最近貌似在前端那块也挺火的.据说,WPF的程序如果不用MVVM,那跟MFC和winform的,也没啥区别. ...

  2. CozyRSS开发记录7-了解RSS

    CozyRSS开发记录7-了解RSS 1.初窥RSS 多找几个RSS源就会发现,有的源是用Atom协议提供的,有的源是RSS协议提供的.RSS协议有过几个版本,0.9.1.0和2.0等,理论上支持2. ...

  3. CozyRSS开发记录22-界面退化

    CozyRSS开发记录22-界面退化 1.问题1-HtmlTextBlock 找的这个HtmlTextBlock有很严重的bug,有时候显示不完全,有时候直接就崩了.然后看了下代码,完全是学生仔水平写 ...

  4. CozyRSS开发记录21-默认RSS源列表

    CozyRSS开发记录21-默认RSS源列表 1.默认列表 在第一次使用CozyRSS的情况下,我们让它内置五个RSS源吧: 2.响应RSS源的更新 先不处理RSS源列表项的点击,响应下下拉菜单里的更 ...

  5. CozyRSS开发记录20-CanResizeWithGrip

    CozyRSS开发记录20-CanResizeWithGrip 1.窗口样式 首先,WindowStyle有四种: 然后,对于窗口缩放的ResizeMode,也有四种,CanResize和CanRes ...

  6. CozyRSS开发记录19-窗口标题栏交互

    CozyRSS开发记录19-窗口标题栏交互 1.谈谈对mvvm解耦的看法 在使用mvvm时,如何操作窗口,这是一个问题.这个问题的关键点是:mvvm是把view和viewmodel解耦了的,很多写法一 ...

  7. CozyRSS开发记录17-Html2Xaml

    CozyRSS开发记录17-Html2Xaml 1.RssContentView还需要优化 上回做了RssContentView的显示,但是对于rss返回的描述(摘要),连换行的没有,更别说里面还有h ...

  8. CozyRSS开发记录16-RssContentView显示

    CozyRSS开发记录16-RssContentView显示 1.RssContentView的布局和绑定 继续参照原型图来写xaml: 然后在RSSContentFrameViewModel里提供绑 ...

  9. CozyRSS开发记录15-获取和显示RSS内容

    CozyRSS开发记录15-获取和显示RSS内容 1.内容列表 我们先给RSSContentFrame增加一个ViewModel,里面和RSS源列表一样,提供一个ObservableCollectio ...

随机推荐

  1. [Android]学习笔记Activity_001

    操作button的说明 设置button的ID: android:id="@+id/button" 设置button的点击事件 findViewById(R.id.button). ...

  2. [转]C语言SOCKET编程指南

    1.介绍 Socket编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等 ...

  3. .htaccess基本语法和应用 (2012-11-09 16:13:47)转载▼

    htaccess基本语法和应用 (2012-11-09 16:13:47) 转载▼ 标签:  htaccess it 分类: 网络 .htaccess是Apache服务器的一个非常强大的分布式配置文件 ...

  4. 关于HTML5本地缓存技术LocalStorage 本地存储 和 SessionStorage

    如果你想在用户访问的时候记录或者记住他们的行为,你会想到的是什么,cookie 和session.但今天告诉你还有两种或者说是1种吧 那就是html5的 LocalStorage 本地存储和 Sess ...

  5. Shell脚本学习第二课·

    Shell文件包含 shell也可以包含外部脚本,语法格式如下: . filename 或 source filename 例如创建两个shell脚本. 脚本1:test1.sh url = &quo ...

  6. Markdown段落首行缩进的实现办法

    添加:   

  7. HTML5 —— 自学第一课

    1.心得 首先遇见问题要寻根源,而不是将问题抛出:其次要经常查看参考文档.参考示例:学会百度. 2.技能需求 HTML5.XHTML.CSS3.JavaScript.jQuery(jQuery-UI/ ...

  8. 视图控制器的View整体上移问题

    最近我朋友代码出现一个问题,我看了下,发现已经是适配iOS那时候的问题了 如果你准备将你的老的 iOS 6 app 迁移到 iOS 7 上,那么你必须注意了.当你的老的 app 在 iOS 7 设备上 ...

  9. 3D游戏编程大师技巧──环境搭建

    刚开微博,想借助这个平台与大家交流,写下自己的学习记录,希望得到大家的批评指正. 好了,进入主题.这段时间对游戏编程很感兴趣,于是在网友的推荐下开始学习<3D游戏编程大师技巧>这本书.今天 ...

  10. JSTL标签库(一)核心标签库

    核心标签库(core) 1.表达式操作 2.流程控制 3.迭代操作 4.URL操作 1.表达式操作 标签 语法 功能 说明 <c:out> <c:out value="&l ...