在项目文件中,我们可以看到有一个Rss文件夹,里面有三个文件,保存有三个类,分别是RssChannel,RssFeed,RssItem。
通过查看代码,我们可以了解到,基本数据流程是这样的,首先从网络上的Rss2.0 XML文件得到XML格式的数据,然后使用XML命名空间中的相关类进行解析,提取出我们所需要的数据保存在内存中。
首先我们考察RssFeed类,它的类结构是这样的:
其中有三个方法,使用了factory pattern 。(关于这个模式,请参考吕老师的相关文章)
RssFeed的方法摘要为Private constructor to be used with factory pattern. (即为工厂模式提供构造器)。
FromUri跟FromText为两个工厂。
FromUri的摘要为Factory that constructs RSSFeed objects from a uri pointing to a valid RSS 2.0 XML file.(从一个指向RSS2.0 XML文件的uri取得一个RSSFeed对象)
FromText摘要为Factory that constructs RssFeed objects from the text of an RSS 2.0 XML file.(从一个RSS2.0 XML文件取得一个RssFeed对象)
工厂取得RssFeed对象以后就使用对象构造器(即RssFeed()方法)进行构造,取出里面的channel节点构造RssChannel对象,然后加入到一个使用了泛型的List<RssChannel>。
再考察RssChannel类的类结构如下:
类很简单,RssChannel的构造器从RssFeed获得了channel节点的对象以后,进一步解析出里面的Item对象,使用RssItem进行构造,添加进一个List<RssItem>。
然后我们考察RssItem类,结构如下:
查看代码,我们可以看到这个类实现了一个IItem接口,关于这个接口以后再介绍。
这个类的构造器就是从RssChannel传递来的RssItem对象中取出我们需要的数据:Title,description和link。
这三个类的处理流程就是这样,不算复杂,处理其他类型的XML文件也可以借鉴参考。