Parcurgerea unui RSS folosind C# si XPath
0Acum ceva timp Andrei v-a aratat cum sa procesam informatiile dintr’un feed folosind preg_match(), exista insa metode mai usoare si mai rapide. Procesarea cu ajutarea XPath’ului nu este cea mai rapida metoda (mai rapida totusi decat preg_match) insa este pe departe cea mai usoara.
Ce este RSS?
RSS este o technlogie utilizata de milioane de utilizatori web pentru a tine evidenta articolelor de pe siturile lor favorite usor si eficient. RSS vine de la ‘Real Simple Syndication’ si aceasta practic poate fi denumit chiar „ziarul internetului”.
Un exemplu de document RSS
<?xml version="1.0" ?> <rss version="2.0"> <channel> <!-- Informatii legate de site/rss--> <title>Area72 Development Blog</title> <description>Area72 developing with you bit by bit</description> <link>http://area72.ro</link> <!-- Obiectul care contine informatia in sine --> <item> <title>Extracting RSS Data with C# and XPath</title> <description></description> <link>http://area72.ro/general-it/extracting-rss-data-csharp.html</link> </item> <item> <title>Using the params modifier in C#</title> <description>One useful modifier.</description> <link>http://area72.ro/programming/using-the-params-modifier-in-csharp.html</link> </item> </channel> </rss>
Navigarea prin XML folosind XPath
XPath sau ‘XML Path Language’ este un limbaj de interogare(semanator cu sql) insa folosit pentru selectarea nodurilor dintrun fisier XML. La inceput poate fi un pic cam dificil de inteles dar haideti sa vedem cat de simplu este sa extragem datele din link si title.
//Initializarea clasei document XPathDocument document = new XPathDocument("http://area72.ro/feed"); //Creerea unui XPathNavigator echivalentul lui SqlCommand dar pentru XML XPathNavigator navigator = document.CreateNavigator(); //XpathNodeIterator echivalentul lui SqlDataReader, o folosim pentru a citi datele XPathNodeIterator iterator = navigator.Select("//item/title | //item/link"); // "//item/title | //item/link" - reprezinta query'ul while (iterator.MoveNext()) { //printam titlul Console.WriteLine(iterator.Current.Value); iterator.MoveNext(); // mergem la urmatorul nod Console.WriteLine(iterator.Current.Value); //printam link'ul Console.WriteLine(" "); }
Observati parametrul de tip string „//item/title | //item/link” de la navigator.Select(), acest query va returna nodurile title si link ale obiectului item, cele doua slashuri din fata ( // ) selecteaza toate nodurile de la nodul curent netinand cont de adancimea lor, iar /title | /link selecteaza ‘copii’ nodului item.
Concluzie
Prin acest mic articol sper ca v’am starnit un pic interesul pentru XPath, aceasta fiind cea mai simpla metoda de a naviga printr’un xml. Pentru mai multe informatii despre query’urile Xpath puteti vizita situl W3C.
Articol original: area72.ro