2 pagine in totale: <<Indietro 1 [2]
All'interno della nostra applicazione, dunque, dovremo andare a recuperare tutti i tag
itemSi tratta di modificare il codice precedente, aggiungendo URL e magari utilizzando un repeater anzichè un DataGrid:
<%@ Page Language="C#"%>
<%@ Import Namespace="System.Data"%>
<SCRIPT RUNAT="SERVER">
void Page_Load() {
DataSet ds = new DataSet();
ds.ReadXml("http://newsgroup.aspitalia.com/feed/feed.xml");
dg.DataSource = ds.Tables["item"].DefaultView;
dg.DataBind();
}
</SCRIPT>
<asp:repeater id="dg" runat="server">
<ItemTemplate>
<a href="<%#DataBinder.Eval(Container.DataItem, "link")%>">
<%#DataBinder.Eval(Container.DataItem, "title")%></a><br>
<%#DataBinder.Eval(Container.DataItem, "description")%>
</ItemTemplate>
</asp:repeater>A video verrà mostrato qualcosa di questo tipo:

Come si può notare è lo stesso identico codice che utilizzeremmo prelevando i dati da un normale database. Con ADO.NET la fonte dati è relativa, gli oggetti che si possono utilizzare sono quindi gli stessi.
Migliorare il layout: l'oggetto DataView
Chi ha già buttato un occhio all'architettura di ADO.NET saprà certamente che esiste un oggetto particolare, il DataView, che consente di avere una visualizzazione dei dati contenuti ad esempio in un DataSet.
Difatti di default il DataSet ha un metodo DefaultView che restituisce un DataView che contiene tutte le DataRow (righe) del DataTable corrispondente.
A questo punto non è tanto difficile applicare filtri o ordinamenti ai nostri dati. Ancora una volta, facciamo parlare un esempio:
<%@ Page Language="C#"%>
<%@ Import Namespace="System.Data"%>
<SCRIPT RUNAT="SERVER">
void Page_Load() {
DataSet ds = new DataSet();
ds.ReadXml("http://newsgroup.aspitalia.com/feed/feed.xml");
DataView dv = ds.Tables["item"].DefaultView;
// filtriamo il campo description, cercando solo .NET
dv.RowFilter = "description LIKE '%.NET%'";
// ordiniamo sul campo title
dv.Sort = "title";
dg.DataSource = dv;
dg.DataBind();
}
</SCRIPT>
<asp:repeater id="dg" runat="server">
<ItemTemplate>
<a href="<%#DataBinder.Eval(Container.DataItem, "link")%>">
<%#DataBinder.Eval(Container.DataItem, "title")%></a><br>
<%#DataBinder.Eval(Container.DataItem, "description")%>
</ItemTemplate>
</asp:repeater>Questo codice mosterà solo i contenuti che abbiano all'interno del tag description il valore .NET e lo ordinerà per il tag title, senza rispettare l'ordine di inserimento nel documento XML. Ovviamente si può fare di meglio.
Un altro esempio
Per finire, analizziamo un ultimo esempio, che anzichè utilizzare RSS 0.91, ancora molto diffuso ma per certi versi limitato, usa RDF , una variante che supporta meglio l'interscambio dei dati.
Vediamo quindi come utilizzare al meglio RDF, con questo esempio:
<%@ Page Language="C#"%>
<%@ Import Namespace="System.Data"%>
<SCRIPT RUNAT="SERVER">
void Page_Load() {
DataSet ds = new DataSet();
ds.ReadXml("http://www.extensible.it/feedXML.aspx");
DataView dv = ds.Tables["item"].DefaultView;
// ordiniamo sul campo date
dv.Sort = "date DESC";
dg.DataSource = dv;
dg.DataBind();
}
</SCRIPT>
<asp:repeater id="dg" runat="server">
<ItemTemplate>
<a href="<%#DataBinder.Eval(Container.DataItem, "link")%>">
<%#DataBinder.Eval(Container.DataItem, "title")%></a><br>
<%#(DataBinder.Eval(Container.DataItem, "date"))%> -
<%#(DataBinder.Eval(Container.DataItem, "creator"))%> -
<%#DataBinder.Eval(Container.DataItem, "description")%>
</ItemTemplate>
</asp:repeater>In questo modo potremo visualizzare anche altri informazioni, quale l'autore o la data di creazione:

Conclusioni
In realtà l'argomento XML all'interno del .NET Framework è molto complesso ed articolato. Quanto presentato in questo articolo, attraverso l'utilizzo di feed RSS o RDF è in realtà facilmente riportabile ad altri casi reali in cui ci sia da lavorare con documenti XML.
D'altra parte il mercato si è orientato già da tempo verso formati basati su XML, che rendendo davvero facile sia l'importazione che l'esportazione.
Se quello che dovete fare è visualizzare dati prelevati da una fonte remota, XML e DataSet vanno d'accordo, come avrete avuto modo di notare in questo articolo.
Io stesso ne faccio un grande uso quando le informazioni sono poche, non cambiano così spesso e soprattutto la pigrizia vi dice di non creare una tabella in un database. Bastano poche linee di codice, un file XML well formed (ovvero, valido dal punto di vista formale), un po' di spirito d'iniziativa e magari un bell'user control con Cache per avere una perfetta visualizzazione ed un'occupazione quasi minima del server.
Approfondimenti
- Il tutorial dedicato ad XML
- eXtensible.it, il nuovo sito dedicato ad XML , tutto in italiano
- L'oggetto DataSet di ADO.NET all'interno del class browser
2 pagine in totale: <<Indietro 1 [2]
Contenuti dell'articolo
- Galleria fotografica dinamica con ASP.NET AJAX
- Usare Search come un servizio nei tuoi siti e nei tuoi client
- Mappe nel tuo sito con Virtual Earth
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni
- Introduzione ai cloud based service con Windows Live Services
- Realizzare un custom extender AJAX con ASP.NET 3.5
- Tracciare le modifiche ai dati e allineare i datawarehouse con il Change Data Capture in SQL Server 2008
- Le nuove caratteristiche di IIS 7.0 per sviluppatori e sistemisti
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Difficoltà

Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!