2、从RSS链接中获取新闻信息
现在我们就可以开始编写读取函数,将抽取出的RSS信息放入上面设计好的结构中。
C#提供了专门的类来访问XML, 使我们能够轻松地读出RSS的内容。代码如下:
以下是引用片段: XmlTextReader Reader = new XmlTextReader(URL); XmlValidatingReader Valid = new XmlValidatingReader(Reader); Valid.ValidationType = ValidationType.None; XmlDocument xmlDoc= new XmlDocument(); xmlDoc.Load(Reader); | 使用XmlDocument类将txtURL中输入的RSS链接加载后,首先通过FoundChildNode函数,找到Channel节点。
以下是引用片段: private XmlNode FoundChildNode(XmlNode Node,string Name) { XmlNode childlNode = null; for (int i=0;i < Node.ChildNodes.Count;i++) { if ( Node.ChildNodes[i].Name == Name && Node.ChildNodes[i].ChildNodes.Count > 0 ) { childlNode = Node.ChildNodes[i]; return childlNode; } } return childlNode; } XmlNode rssNode = FoundChildNode(xmlDoc,"rss"); XmlNode channelNode = FoundChildNode(rssNode,"channel"); | 然后我们就可以遍历它的子节点,根据子节点的Name属性,读取我们需要的信息。
以下是引用片段: rss.Channel channel=new rss.Channel(); channel.Items=new Hashtable(); { switch ( channelNode.ChildNodes[i].Name ) { case "title": { channel.Title = channelNode.ChildNodes[i].InnerText; break; } case "item": { rss.Item item=this.getRssItem(channelNode.ChildNodes[i]); channel.Items.Add(channel.Items.Count,item ); break; } } } | | 如果发现是item子节点,就调用getRssItem函数,同样通过遍历子节点的方法,将其子节点内容填入Item结构中,然后再添加到 Channel结构的Items集合中。因为本程序并不关心添加到集合的键值,只需要它是不重复的值,所以我传入了Count属性。上一页 [1] [2] [3] 下一页 |