using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Xml;using System.Collections;namespace TestRss{ class Program { static void Main(string[] args) { string Url = "http://rss.sina.com.cn/news/marquee/ddt.xml"; RSS zhou = new RSS(Url); } } public class RSS { public string title = ""; public string link = ""; public string Description = ""; public string language = ""; public string copyright = ""; public string managingEditor = ""; public string webMaster = ""; public string pubDate = ""; public string lastBuildDate = ""; public string generator = ""; public string ttl = ""; public string rating = ""; public string skipHours = ""; public string skipDays = ""; public RssCloud rssCloud; public RssCategory rssCategory = new RssCategory(); public List<RssItem> listRssItem = new List<RssItem>(); public List<RssImage> listRssImage = new List<RssImage>(); public List<RssInput> ListRssInput = new List<RssInput>(); /// <summary> /// 测试函数 /// </summary> /// <param name="strIn">输入参数</param> /// <param name="strOut">输出参数</param> /// <returns>函数操作成功返回true,失败返回false</returns> public RSS(string strIn) { rssCategory = new RssCategory(); rssCloud = new RssCloud(); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(strIn); XmlElement rootElement = (XmlElement)xmlDocument.DocumentElement; XmlNode channelXmlNode = rootElement.ChildNodes[0]; IEnumerator IEnumeratorXmlNode = channelXmlNode.GetEnumerator(); while (IEnumeratorXmlNode.MoveNext()) { XmlNode xmlNode = (XmlNode)IEnumeratorXmlNode.Current; switch (xmlNode.Name) { case "generator": generator = xmlNode.InnerText; break; case "ttl": ttl = xmlNode.InnerText; break; case "rating": rating = xmlNode.InnerText; break; case "skipHours": skipHours = xmlNode.InnerText; break; case "skipDays": skipDays = xmlNode.InnerText; break; case "title": title = xmlNode.InnerText; break; case "link": link = xmlNode.InnerText; break; case "Description": Description = xmlNode.InnerText; break; case "copyright": copyright = xmlNode.InnerText; break; case "webMaster": webMaster = xmlNode.InnerText; break; case "pubDate": pubDate = xmlNode.InnerText; break; case "lastBuildDate": lastBuildDate = xmlNode.InnerText; break; case "item": IEnumerator itemTempXmlNode = xmlNode.GetEnumerator(); RssItem tempRssItem = new RssItem(); while (itemTempXmlNode.MoveNext()) { XmlNode itemNode = (XmlNode)itemTempXmlNode.Current;
switch (itemNode.Name) { case "title": tempRssItem.title = itemNode.InnerText; break; case "author": tempRssItem.author = itemNode.InnerText; break;
case "category": if(itemNode.Attributes.Count>0)tempRssItem.category.domain = itemNode.Attributes[0].Value; tempRssItem.category.text = itemNode.InnerText; break; case "comments": tempRssItem.comments = itemNode.InnerText; break; case "description": tempRssItem.description = itemNode.InnerText; break; case "enclosure": tempRssItem.enclosure.url = itemNode.Attributes[0].Value; tempRssItem.enclosure.length = long.Parse(itemNode.Attributes[1].Value); tempRssItem.enclosure.type = itemNode.Attributes[2].Value; break; case "guid": tempRssItem.guid = itemNode.InnerText; break; case "link": tempRssItem.link = itemNode.InnerText; break; case "source": tempRssItem.source.url = itemNode.Attributes[0].Value; tempRssItem.source.text = itemNode.InnerText; break; } } listRssItem.Add(tempRssItem); break; case "image": IEnumerator imageTempXmlNode = xmlNode.GetEnumerator(); RssImage tempRssImage = new RssImage(); while (imageTempXmlNode.MoveNext()) { XmlNode imageNode = (XmlNode)imageTempXmlNode.Current; switch (imageNode.Name) { case "url":tempRssImage.url=imageNode.InnerText; break; case "title":tempRssImage.title=imageNode.InnerText; break; case "link": tempRssImage.link=imageNode.InnerText;break; case "width":tempRssImage.width=int.Parse( imageNode.InnerText); break; case "height": tempRssImage.height = int.Parse(imageNode.InnerText); break; case "description": tempRssImage.description = imageNode.InnerText; break; }
} listRssImage.Add(tempRssImage); break; case "textInput": IEnumerator textInputTempXmlNode = xmlNode.GetEnumerator(); RssInput tempRssInput = new RssInput(); while (textInputTempXmlNode.MoveNext()) { XmlNode textInputNode = (XmlNode)textInputTempXmlNode.Current; switch (textInputNode.Name) { case "title": tempRssInput.description = textInputNode.InnerText; break; case "description": tempRssInput.link = textInputNode.InnerText; break; case "name": tempRssInput.name = textInputNode.InnerText; break; case "link": tempRssInput.title = textInputNode.InnerText; break; } } ListRssInput.Add(tempRssInput); break; case "category": IEnumerator categoryTempXmlNode = xmlNode.GetEnumerator(); while (categoryTempXmlNode.MoveNext()) { XmlNode categoryNode = (XmlNode)categoryTempXmlNode.Current; rssCategory.domain = categoryNode.Attributes[0].Value; rssCategory.text = categoryNode.InnerText; } break; case "cloud": IEnumerator cloudTempXmlNode = xmlNode.GetEnumerator(); while (cloudTempXmlNode.MoveNext()) { XmlNode cloudNode = (XmlNode)cloudTempXmlNode.Current; rssCloud.domain = cloudNode.Attributes[0].Value; rssCloud.path = cloudNode.Attributes[1].Value; rssCloud.port = int.Parse(cloudNode.Attributes[2].Value); rssCloud.protocol = cloudNode.Attributes[3].Value; rssCloud.registerProcedure = cloudNode.Attributes[4].Value; } break; } } } } public class RssImage { public string url = ""; public string title = ""; public string link = ""; public int width = -1; public int height = -1; public string description = "";
} public class RssItem { public string title = ""; public string link = ""; public string description = ""; public RssCategory category = new RssCategory(); public string pubDate = ""; public string comments = ""; public RssEnclosure enclosure = new RssEnclosure(); public string guid = ""; public string author = ""; public RssSource source = new RssSource(); } public class RssInput { public string title = ""; public string description = ""; public string name = ""; public string link = "";
} public class RssCloud { public string domain = ""; public int port = -1; public string path = ""; public string registerProcedure = ""; public string protocol = ""; } public class RssEnclosure { public string url = ""; public long length = 0; public string type = "";
} public class RssSource { public string url = ""; public string text = "";
} public class RssCategory { public string domain = ""; public string text = ""; }}