|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我有个同学,他是搞Java的,他给我说“Java不是效率低,而是速度慢。”,我不是搞Java的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了?rss 假如想使用.NETFramework来利用RSSfeed的话,这实在其实不庞大。你只必要做上面几步就能够了:
◆链接到供应RSSfeed的网站
◆下载feedXML
◆将feed的XML装载到同意搜刮的工具中
◆为你想提取的结点搜刮feed的XML
.NETFramework供应了内置函数来完成一切的义务。我们所必要做的就是,将这些功效绑定在一同,如许我们就能够利用RSSfeeds。
链接到服务器
我们可使用WebRequest工具链接到服务器上。WebRequest工具使你能够在Web站点上贴出哀求,自从RSS经由过程HTTP传输后,WebRequest工具就成了链接服务器最次要的选择了。
ListingA中的代码告知我们,任何将一个新的WebRequest工具与一个URL举行毗连。
ListingA
- //CreateaWebRequestobject
- WebRequestmyRequest=WebRequest.Create(url);
复制代码 在这个例子中,也能够用完全URL的来代替RSSfeed中的“url”。上面是MSNAutomotiveRSSfeed的地点:http://rss-feeds.msn.com/autos/autosnews.xml
下载RSS数据
当我们毗连到服务器以后,我们必要下载feed供应的数据。WebRequest工具为完成这个目标供应了一个GetResponse()办法。WebRequest.GetResponse()办法前往一个WebRequest工具,这个工具依据我们的哀求给我们会见服务器的呼应。
在这里我们将用到WebResponse(Web呼应)工具的GetResponseStream()办法。这个办法前往一个Stream工具,这个工具中包括了服务器所呼应的原始RSSXML。ListingB中的代码告知我们怎样从WebRequest(Web哀求)工具失掉WebResponse(Web呼应)工具,和怎样从WebResponse(Web呼应)工具得呼应流。
ListingB- //GettheresponsefromtheWebRequest
- WebResponsemyResponse=myRequest.GetResponse();
- //Gettheresponsesstream
- StreamrssStream=myResponse.GetResponseStream();
复制代码 将RSS数据装载到XML文档中
一旦我们从WebResponse(Web呼应)工具失掉了流,我们就将这个流下载到XmlDocument工具中了。如许我们就很简单对XML数据举行剖析了,并能轻松地从中取值。失掉XmlDocument装载Stream最复杂的办法是,创立一个新的XmlDocument工具,并将我们的Stream传送给Load办法。ListingC为我们申明了这个办法的利用。
ListingC- //CreatetheXmlDocument
- XmlDocumentdocument=newXmlDocument();
- //LoadthestreamintotheXmlDocumentobject.
- document.Load(rssStream);
复制代码 剖析XML
这是利用RSSfeed最难的部分。我们必需利用方才创立的XmlDocument来失掉含有我们本人数据的XML结点。我们广泛感乐趣的结点是:
◆Feed的题目,它寄存在feedXML中的/rss/channel/title文件内里
◆Feed的文章,它寄存在feedXML中的/rss/channel/item文件内里。在这个地位大概有多个结点。
◆文章的题目,它寄存在文章结点中的title内里。
◆文章的形貌,它寄存在文章结点的description内里。
◆文章的链接,它寄存在文章结点的link内里。
我们可使用XmlDocument工具内置的SelectSingleNode函数和SelectNodes函数来失掉这些结点。这两个函数都能够承受XPath查询,也都能够前往与查询了局相婚配的一个或多个结点。
ListingD这段代码告知我们怎样利用XmlDocument和Xpath从RSSfeed平分析出每一个独自的元素。
ListingD- //GetanXmlDocumentobjectthatcontainsthefeedsXML
- XmlDocumentfeedDocument=
- GetXmlDocumentFromFeed("http://rss-feeds.msn.com/autos/autosnews.xml");
- //CreateaXmlNamespaceManagerforournamespace.
- XmlNamespaceManagermanager=
- newXmlNamespaceManager(feedDocument.NameTable);
- //AddtheRSSnamespacetothemanager.
- manager.AddNamespace("rss","http://purl.org/rss/1.0/");
- //GetthetitlenodeoutoftheRSSdocument
- XmlNodetitleNode=
- feedDocument.SelectSingleNode("/rss/channel/title",manager);
- //Getthearticlenodes
- XmlNodeListarticleNodes=
- feedDocument.SelectNodes("/rss/channel/item",manager);
- //Loopthroughthearticlesandextract
- //theirdata.
- foreach(XmlNodearticleNodeinarticleNodes)
- {
- //Getthearticlestitle.
- stringtitle=
- articleNode.SelectSingleNode("title",manager).InnerText;
- //Getthearticleslink
- stringlink=
- articleNode.SelectSingleNode("link",manager).InnerText;
- //Getthearticlesdescription
- stringdescription=
- articleNode.SelectSingleNode("description",manager).InnerText;
- }
复制代码 不是一切的RSSfeed的创立都是不异的
假如一切的RSSfeed都利用不异的格局,它将变得更壮大,但是RSSfeed有很多分歧的版本和完成。在这篇文章中形貌的格局合适年夜部分的feed,大概有少部分的RSSfeed格局与这个格局分歧。
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。 |
|