Alessandro Del Sole's Blog

/* A programming space about Microsoft® .NET® */

  Home :: Contact :: Syndication  :: Login
  1204 Posts :: 64 Stories :: 1555 Comments :: 251 Trackbacks

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Microsoft MVP

My MVP Profile

My MVP Corner Page

Il mio libro su VB2010!

Il mio nuovo libro su Visual Basic 2010 E' uscito il mio libro "Visual Basic 2010 Unleashed". Clicca sulla copertina per informazioni!

Visual Basic Tips & Tricks Team Member

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Windows Live Alerts

Vsi Builder 2008

Il mio tool per VS 2005/2008 Scarica Vsi Builder, il mio tool per Visual Studio 2005/2008!

Aggiungimi al Social MSDN!

Dove vivo

Contattami su Messenger


Grab this badge here!

Guarda i miei webcast MSDN

CyberInstaller Beta Tester

Scarica il nuovo CIS 2009!!

Altri spazi

CodePlex download Scarica i miei progetti open-source su CodePlex!

Cerca nel blog



Seguimi su Twitter!

Article Categories

Archives

Post Categories

Image Galleries

.NET Framework

Back to basics

Blogroll

Help 1.x e 2.0

Microsoft & MSDN

Setup & Deployment

Visual Basic .NET e 2005

Poco tempo fa abbiamo parlato, in questo post, di come sia possibile leggere feed RSS tramite codice Visual Basic 2008, sfruttando il metodo Load della classe XDocument che, oltre a leggere documenti Xml, può recuperare da Internet contenuti nel medesimo formato.

Diverso tempo addietro, in quest'altro post, parlammo di un tool Microsoft chiamato Xml To Schema Inference Wizard, che aggiunge un modello di elemento a Visual Studio, in grado di generare schemi Xml a partire dai documenti Xml specificati. Grazie allo schema generato, viene abilitato il supporto di Intellisense anche nelle query LINQ-to-Xml che sfruttano la simbologia tipica di Visual Basic 2008, in particolare Descendants (...< >), Elements (.< >) e AttributeValue (.@).

Oggi uniamo il contenuto dei due post, per vedere come leggere feed RSS e scrivere una query LINQ che abbia il supporto di Intellisense. In primo luogo, dovete leggere i due post sopra citati! J

Questo perchè leggere i feed RSS è molto semplice con LINQ, ma non sempre si possono ricordare a memoria tutti gli elementi Xml che li costituiscono, quindi oggi vediamo come farlo aggiungendo il supporto di Intellisense.

Dopodichè, create un nuovo progetto per la Console e aggiungete un nuovo elemento di tipo Xml To Schema, chiamandolo, ad esempio, FeedSchema.xsd. Quando la finestra di Xml To Schema richiederà di specificare la sorgente Xml, utilizzate il pulsante Add From Web e, nella casella di testo che compare, specificate l'Uri da cui volete recuperare i feed, come ad esempio il seguente: http://community.visual-basic.it/alessandro/Rss.aspx che è l'indirizzo per i feed RSS di questo blog.

Dopo aver fatto clic su OK, Xml To Schema genera e aggiunge al progetto una serie di schemi in formato .Xsd che "mappano" la struttura Xml dei feed.

Attivando poi l'editor di codice, in primo luogo carichiamo in memoria i feed:

Dim doc As XDocument = XDocument.Load("http://community.visual-basic.it/alessandro/Rss.aspx")

Dopodichè, iniziamo con lo scrivere la query. Il codice è il seguente:

Dim query = From item In doc...<item> _

            Let DataPubblicazione = CDate(item.<pubDate>.Value).ToLocalTime _

            Let TitoloPost = item.<title>.Value _

            Let Categoria = item.<category>.Value _

            Order By DataPubblicazione Descending _

            Select New With {.Data = DataPubblicazione, .Titolo = TitoloPost, .Categoria = Categoria}

Infine, scriviamo una semplice iterazione per mostrare i risultati:

For Each feed In query

    Console.WriteLine("Data: {0}, Titolo post: {1}, Categoria: {2}", feed.Data, feed.Titolo, feed.Categoria)

Next

 

Console.ReadLine()

Durante la scrittura del codice, in particolare nell'aggiunta dei Descendants (...< >), avrete notato come, grazie ai namespace Xml mappati negli schemi, Intellisense mostri le alternative disponibili, come in qualunque altro tipo di situazione a cui siete abituati, sebbene con icone diverse, come in figura:

Di ulteriore interesse è il fatto che le informazioni selezionate (data di pubblicazione, titolo del post e categoria del post) confluiscono in tipi anonimi, assegnati a una collection che per inferenza è determinata come IEnumerable(Of anonymous types). Da ultimo, evidenziamo l'utilizzo della keyword Let che permette di assegnare un identificatore temporaneo alle informazioni su cui stiamo lavorando.

Se vi è utile, il codice è disponibile facendo clic qui sotto:

Alessandro

posted on Tuesday, June 17, 2008 6:28 PM

Feedback

# re: LINQ-to-Xml: leggere feed RSS in Visual Basic, con l'inferenza di schemi 6/10/2009 10:21 AM andrea
scusami,
con VB 2008 express edition come si fanno questi passaggi?
grazie

# re: LINQ-to-Xml: leggere feed RSS in Visual Basic, con l'inferenza di schemi 6/10/2009 12:31 PM Alessandro Del Sole
Si eseguono nello stesso modo anche in VB Express; hai provato a leggere gli altri post cui si fa riferimento all'inizio?

Post Feedback

Title:
Name:
Url:
Comments: 
Codice di sicurezza
Protected by FormShield