Parsowanie nagłówków RSS
Ktos
Używając PowerShella można w łatwy sposób parsować nagłówki RSS. RSS jest bardzo uniwersalnym formatem do publikacji nowości, stosowanym przez wiele serwisów internetowych, a sam oparty jest o XML, co powoduje, że bardzo łatwo jest nim operować, używając na przykład klasy platformy .NET System.Xml.XmlDocument.
Aby pobrać dokument ze strony internetowej można wykorzystać dostępną w .NET 2.0 i bardzo prostą w użyciu klasę System.Net.WebClient, o wiele łatwiejszą do tak prostych celów, niż używanie klas HttpRequest i HttpResponse.
$webClient = New-Object System.Net.WebClient; # tworzymy obiekty klas WebClient oraz XmlDocument
$xmlDoc = New-Object System.Xml.XmlDocument; # używając komendy New-Object
$webClient.Encoding = [System.Text.Encoding]::UTF8; # ustawiamy kodowanie klienta Web na UTF-8, by prawidłowo ściągnął nagłówki
$xml = $webClient.DownloadString("http://4programmers.net/rss.php?rss=news"); # pobieramy nagłówki RSS z serwisu 4programmers
$xmlDoc.LoadXml($xml); # ładujemy następnie pobrany kod kanału RSS do obiektu XmlDocument
Teraz możemy zrobić już różne rzeczy z instancją XmlDocument - przykładowo bez problemu wyświetlić w ładnej tabeli tytuł oraz datę publikacji za pomocą takiego polecenia:
$xmlDoc.GetElementsByTagName("item") | Format-Table title,pubDate
Co daje na przykład taki wynik:
PS E:\> $xmlDoc.GetElementsByTagName("item") | format-table title,pubDate
title pubDate
----- -------
Przezroczyste ikony w nagłówku kontrolki ListView Fri,20 Apr 2007 19:03:36 +0100
Gotowce Fri,20 Apr 2007 18:57:53 +0100
listview.zip Fri,20 Apr 2007 18:44:14 +0100
lv trans.png Fri,20 Apr 2007 18:43:19 +0100
lv n trans.png Fri,20 Apr 2007 18:41:13 +0100
Td Thu,19 Apr 2007 21:04:29 +0100
Strcoll Thu,19 Apr 2007 16:09:40 +0100
Wyjątki Tue,17 Apr 2007 10:48:25 +0100
Zmienne Sun,15 Apr 2007 12:07:28 +0100
Milyges Sat,14 Apr 2007 20:02:40 +0100
Rozdział 1 Sat,14 Apr 2007 14:57:02 +0100
Register Sat,14 Apr 2007 13:39:53 +0100
Ikonka z bitmapy Wed,11 Apr 2007 17:51:32 +0100
OpenGL Wed,11 Apr 2007 12:40:00 +0100
LKS Mon,09 Apr 2007 20:20:21 +0100
Konwersje liczb Mon,09 Apr 2007 13:40:37 +0100
Strtol Sat,07 Apr 2007 20:18:55 +0100
Jak pobrać losowy cytat z Basha Sat,07 Apr 2007 14:11:08 +0100
Delphi Fri,06 Apr 2007 21:17:11 +0100
Artykuły do usunięcia Fri,06 Apr 2007 15:48:42 +0100
Bez problemu można także odwołać się do jednego, określonego elementu kanału RSS, na przykład:
$xmlDoc.rss.channel.item[7] | Format-List
PS E:\> $xmlDoc.rss.channel.item[7] | Format-List
title : Strcoll
link : http://4programmers.net/C/Strcoll
description : Budowa:
#include
int strcoll(const char *cStr1, const char *cStr2);
Funkcja strcoll() porównuje łańcuch wskazywany przez cStr1 z łańcuchem wskazywanym przez cStr2. Funkcja s
trcoll()
pubDate : Thu,19 Apr 2007 16:09:40 +0100