mercoledì 16 novembre 2011

Silverlight utilizzo dei file xml tramite VB.Net e C#

Riporto l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_silverlight-utilizzare-i-file-xml-in-vbn_1106.aspx



Introduzione
Vedremo in questo nuovo articolo su Silverlight, come utilizzare i file xml, per leggere e scrivere i dati.
I file XML, da alcuni anni, si usano per la gestione dei dati, molto importante infatti è questo protocollo, perché permette di far comunicare, sistemi ed applicazioni diversi fra loro.
L’articolo fornisce le basi per utilizzare i file xml.




Creazione del progetto
Si crea un nuovo progetto di tipo Silverlight 4, in base al linguaggio di proprio gradimento.
Aggiungete nel progetto un nuovo file XML, (dalla finestra esplora soluzione, tasto destro sul nome del progetto->aggiungi



<?xml version="1.0" encoding="utf-8" ?>



<!-- nodi-->



<Items>



<Nome attributo='testo'>



Emanuele</Nome>



<Cognome>Mattei</Cognome>



</Items>







Terminata questa operazione, passiamo in visualizzazione codice XAML, della nostra classe page, ossia la pagina dove andremo a leggere e scrivere i dati XML.
Aggiungente due pulsanti, i quali avranno il ruolo di leggere i dati e scrivere i dati.
In un controllo pulsante, impostate la proprietà “Text” con Leggi e la proprietà “Name” in btnCarica, mentre per l’altro pulsante, impostate la proprietà “Text” in Scrivi e la proprietà “Name in “BtnScrivi”.
Terminato ciò, passiamo in visualizzazione codice ed inseriamo gli spazio dei nomi per la gestione dei file XML.
Qui di seguito si riportano i frammenti di codice delle suddette operazioni




VB.Net



Imports System.Xml



Imports System.IO



Imports System.Text



Imports System.IO.IsolatedStorage







C#





using System.Xml;



using System.IO;



using System.Text;





using System.IO.IsolatedStorage;





Lo spazio dei nomi, forniscono le classi per la gestione dei file XML, file fisici, per la gestione del testo e per il salvataggio isolato.
Passiamo in visualizzazione disegno e facciamo doppio click sul pulsante di lettura, quello relativo alla lettura dei dati.
Nell’evento click, che viene generato nel codice, scriviamo il codice per la lettura dei file.
In particolare faremo uso della classe xmlreader per leggere i vari valori.
Qui di seguito, si riporta un frammento di codice per il linguaggio VB.Net e C#




VB.Net



Private Sub BtnCarica_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles BtnCarica.Click



' Leggo il file



Using lettura As XmlReader = XmlReader.Create("XMLdati.xml")



Dim testo As String = ""



While lettura.Read()



'Ciclo per tutti i nodi



Select Case lettura.NodeType



Case XmlNodeType.Element



testo += vbCrLf & " Nome Elemento:" & lettura.Name & " Attributo:" & lettura.GetAttribute("attributo")



Case XmlNodeType.Text



testo += vbCrLf & " Testo Elemento:" & lettura.Value



Case XmlNodeType.XmlDeclaration Or XmlNodeType.ProcessingInstruction



testo += vbCrLf & " Dichirazione:" & lettura.Name & " " & lettura.Value



Case XmlNodeType.Comment



testo += vbCrLf & " Commento:" & lettura.Value



End Select





End While



textBlock1.Text = testo



End Using



End Sub





C#





private void BtnCarica_Click(object sender, RoutedEventArgs e)



{





// Leggo il file



using (XmlReader Lettura = XmlReader.Create("XMLdati.xml"))



{



string Testo = "";



//Ciclo per tutti i nodi



while (Lettura.Read())



{



switch (Lettura.NodeType)



{



case XmlNodeType.Element:



Testo += "\n Nome Elemento:" + Lettura.Name + " Attributo:" + Lettura.GetAttribute("attributo");



break;



case XmlNodeType.Text:



Testo += "\n Testo Elemento:" + Lettura.Value;



break;



case XmlNodeType.XmlDeclaration:



case XmlNodeType.ProcessingInstruction:



Testo += "\n Dichirazione:" + Lettura.Name + " " + Lettura.Value;



break;



case XmlNodeType.Comment:



Testo += "\n Commento:" + Lettura.Value;



break;





}





}



textBlock1.Text = Testo;



}



}



A questo punto, non ci resta che scrivere il codice per il salvataggio dei dati.
In visualizzazione grafica, facciamo doppio click sul pulsante destinato al salvataggio dei dati, in questo modo viene generato in automatico il codice per il gestore dell’evento click del pulsante.
In visualizzazione codice, scriviamo il codice che ci permette di salvare i dati, il tutto tramite l’utilizzo delle classi classi IsolatedStorageFile, per la gestione di archiviazione isolata, xmlwriteSettings e XmlWrite, per gestione i dati nel file xml ed infine la classe StreamReader per la lettura del file. Nei commenti trovate le indicazioni delle varie righe di codice.



VB.Net



Private Sub BtnScrivi_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles BtnScrivi.Click



'Gestione archiviazione isolata



Using isoStore As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication



' Creo un file



Using isoStream As IsolatedStorageFileStream = New IsolatedStorageFileStream("NomeFile.xml", FileMode.Create, isoStore)



' imposta l'intestazione del file



Dim settings As New XmlWriterSettings



settings.Indent = True



'Eseguo la generazione e la compilazione dei vari campi



Using writer As XmlWriter = XmlWriter.Create(isoStream, settings)



'commento



writer.WriteComment("Commento in XML")



'Creo un elemento, ossia item, che contiene elementi con valore



writer.WriteStartElement("NodoPrincipale")



'Creo per il nodo peredecente degli attributi, di tipo namespace



writer.WriteAttributeString("xmlns", "Attributo", Nothing, "urn:valore attributo")



'Creo un attributo semplice



writer.WriteAttributeString("Attributo", "Vaolore attributo")



'SCrivo un elemento, con il valore



writer.WriteElementString("Nodo", "Valore nodo")



'Chiudo i tag aperti



writer.WriteEndElement()



'Genero il file



writer.Flush()



End Using



End Using



'Leggo il file per le modifiche



Using reader As New StreamReader(isoStore.OpenFile("NomeFile.xml", FileMode.Open))



textBlock1.Text = reader.ReadToEnd()



End Using



End Using



End Sub





C#



private void BtnScrivi_Click(object sender, RoutedEventArgs e)



{



//gestione archiviazione isolata



using (IsolatedStorageFile isoStore =



IsolatedStorageFile.GetUserStoreForApplication())



{



// Creo un file



using (IsolatedStorageFileStream isoStream =



new IsolatedStorageFileStream("NomeFile.xml",



FileMode.Create, isoStore))



{



//imposta l'intenzione del file



XmlWriterSettings settings = new XmlWriterSettings();



settings.Indent = true;



//eseguo la generazione e la compilazione dei vari campi



using (XmlWriter writer = XmlWriter.Create(isoStream, settings))



{



//commento



writer.WriteComment("Commento in XML");



//Creo un elemento, ossia item, che contiene elementi con valore



writer.WriteStartElement("NodoPrincipale");



//Creo per il nodo peredecente degli attributi, di tipo namespace



writer.WriteAttributeString("xmlns", "Attributo", null, "urn:valore attributo");



//Creo un attributo semplice



writer.WriteAttributeString("Attributo", "Vaolore attributo");



//SCrivo un elemento, con il valore



writer.WriteElementString("Nodo", "Valore nodo");



//Chiudo i tag aperti



writer.WriteEndElement();



//Genero il file



writer.Flush();



}



}



//Leggo il file per le modifiche



using (StreamReader reader = new StreamReader(isoStore.OpenFile("NomeFile.xml", FileMode.Open)))



{



textBlock1.Text = reader.ReadToEnd();



}



}



}







Conclusioni
Abbiamo visto come utilizzare il protocollo per lo scambio e gestione dei dati, XML, molto usato in vari linguaggi e tecnologie.
Silverlight, giunto alla versione 5, offre notevoli classi, da considerarlo uno strumento efficiente e con ottima flessibilità.


Nessun commento: