Mobile Controls e XML: come farli convivere

2 pagine in totale: <<Indietro 1 [2]

Query XPath

Il World Wide Web Consortium ha creato XPath, un linguaggio che consente di accedere e manipolare i dati inseriti in un file XML.

XPath rappresenta per XML ciò che SQL rappresenta per i database relazionali: serve per interrogare la "base dati".

Mentre rimando ai links per chi volesse approfondire questo semplice linguaggio, vi mostro subito il codice per estrarre i valori da un file XML e legarli ad un Mobile controls:

<%@ Register TagPrefix="Mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile"%>
<%@ Page Inherits="System.Web.UI.MobileControls.MobilePage" %>
<%@Import Namespace="System.Xml" %>
<%@Import Namespace="System.Xml.XPath" %>
<%' importo le classi di oggetti .net per manipolare i files xml compresa quella dedicata ad XPATH %>
<SCRIPT runat="server">
Sub Page_Load(obj as object,e as eventargs)
 'questa variabile è la stringa di testo che apparirà sul video
 Dim strOutput as string = ""

 'creo l'oggetto XPathDocument e lo localizzo 'mappo'
 'attraverso Server.MapPath
 Dim objDocumento_xml as New XPathDocument _
       (Server.MapPath("libri.xml"))
 'creo l'oggetto objNavigatore attraverso il metodo CreateNavigator di
 'objDocumento_xml
 Dim objNavigatore as XPathNavigator = objDocumento_xml.CreateNavigator
 'creo l'oggetto objIteratore per iterare tra i nodi del documento xml
 'e finalmente faccio la SELECT XPath
 
 dim objIteratore as XPathNodeIterator =  _
 objNavigatore.Select("descendant::libri/informatica/autore")   
                  
 While objIteratore.MoveNext()
    strOutput += "<" & objIteratore.Current.Name & "><b>" & objIteratore.Current.Value & "</b>"
 End While

 'lego al mobile control dati_database il valore di strOutput
 dati_XML.Text = strOutput

End Sub
</SCRIPT>
<mobile:Form id="Main" runat="server">
 <mobile:Label runat="server" StyleReference="Title" Text="query XPATH" />
 <mobile:TextView runat="server" id="dati_XML" Wrapping="NoWrap" />
</mobile:Form>

Entriamo nel dettaglio: abbiamo creato l'oggetto XPathNavigator che attraverso il suo metodo Select() ci consente di fare una interrogazione nei dati strutturati nel file XML.

Il parametro che passiamo al metodo select è un'istruzione XPATH, il linguaggio al quale ho accennato e che assomiglia concettualmente alla navigazione tra directory e sotto directory nel Sistema Operativo DOS.

Oltre Xpath: XmlTextReader

XPath è la soluzione principale per manipolare sorgenti XML con i Mobile Controls, ma per completezza riporto anche un particolare costrutto della piattaforma .NET che consente un binding senza problemi dei dati tratti da un file XML usando il tipico oggetto XmlTextReader.

ArrayList consente di creare un indice di variabili (array) e di dimensionarlo a piacimento:

<%@ Register TagPrefix="Mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile"%>
<%@ Page Inherits="System.Web.UI.MobileControls.MobilePage" %>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Xml" %>
<SCRIPT runat=server>
 
sub Page_Load(obj as object, e as eventargs)
   
 ' Creo l'oggetto XMLTextReader
  dim lettore_file_xml as XMLTextReader
 lettore_file_xml = new XMLTextReader(Server.MapPath("libri.xml"))
 ' Creo l' ArrayList() che sarà legato al mobile controls
  dim arxml As new ArrayList()
 ' un meccanismo di gestione dell'errore try catch      
 try
   ' faccio un ciclo attraverso il file xml utilizzando il metodo read()
   ' di lettore_file_xml e metto il risultato nell'array
   While lettore_file_xml.Read()
     arxml.Add(lettore_file_xml.value)
     arxml.Add(lettore_file_xml.name)
    
   End While
   lst.DataSource = arxml
   lst.DataBind()
 catch ex as exception
   ' se c'è un errore metto il risultato nell'array
   dim errore as string = "errore nell' accedere al file xml"
   arxml.Add(errore)
   lst.DataSource = arxml
   lst.DataBind()
 finally
   lettore_file_xml.close
 end try
end sub
                  
</SCRIPT>
<mobile:Form id="Form1" runat="server">
<mobile:Label runat="server" Text="IL FILE XML"
Font-Name="arial"
Font-Size="Large"
Font-Bold="True"
Alignment="Center"
/>
<mobile:List id="lst" Font-Name="arial" runat="server"/>
      
</mobile:Form>

Semplice vero?

Conclusioni

E con questo termina la seconda puntata degli articoli dedicati ai Mobile Controls. Ovviamente, anche per questo valgono le considerazioni precedentemente fatte: abbiamo solo iniziato ad intaccare la superficie di questa nuova tecnologia ed abbiamo bisogno di lavorarci con calma, studiando, documentandoci ma soprattutto divertiandoci.

Approfondimenti

2 pagine in totale: <<Indietro 1 [2]

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC