Serializzazione XML con i Web Service di ASP.NET e ASP

2 pagine in totale: [1] 2 Avanti >>

In questo articolo vedremo come creare un web service .NET che espone un metodo in grado di restituire una stringa XML contenente delle informazioni complesse, che recupereremo e manipoleremo in una pagina ASP grazie all'utilizzo dell'XMLDOM.

Grazie al namespace "System.Xml.Serialization", è possibile infatti serializzare in XML, ovvero rendere persistente un certo oggetto sotto forma di XML, un tipo di dato definito dall'utente tramite la semplice creazione di una classe, con pochissime righe di codice.

Questo processo si rivela uno strumento molto utile quando è necessario restituire al client dei dati in formato complesso, come ad esempio array, il risultato di una query su un database, in quanto consente di superare i limiti di SOAP (e dei Toolkit che esistono attualmente) nella gestione dei tipi di dati complessi, creando e restituendo quindi una semplice stringa contenente però dell'XML.

In più, non dimentichiamo che restituire dati come XML è utilissimo quando il client gira su una piattaforma diversa da quella del server.

Il server

Vediamo subito la parte dell'esempio relativa al web service .NET.

Ecco il codice di xmlSerialization_memoryStream.asmx

<%@ WebService Language="vb" Class="SerializzaXml" %>
Imports System
Imports System.IO
Imports System.Web.Services
Imports System.Xml
Imports System.Xml.Serialization
Public Class SerializzaXml : Inherits WebService
    <WebMethod> public Function xmlDocument() As String
    Dim myOrdine as New Ordine
    Dim strXml as String
    ' Crea le istanze della classe "Item" e ne setta gli attributi
    Dim myItem As New Item()
    myItem.ID = 0
    myItem.Prezzo = 10000
    Dim myItem1 As New Item()
    myItem1.ID = 1
    myItem1.Prezzo = 20000
    ' Crea un array di tipo "Item" composto da 2 elementi
    Dim items(1) As Item
    ' sposto l'istanza di "Item" con i valori settati negli elementi dell'array
    items(0) = myItem
    items(1) = myItem1
    ' Sposta nell'attributo "Items" della classe "Ordine" l'array di tipo "Item"
    myOrdine.Items = items
    'Istanzio un MemoryStream che usa la memoria al posto del disco (capacità iniziale 4KB)
    Dim buffer As New MemoryStream(4096)
    Dim serializer As New XmlSerializer(GetType(Ordine))
    serializer.Serialize(buffer,myOrdine)
    'setta la posizione dello stream all'inizio
    buffer.seek(0,SeekOrigin.Begin)
    'legge lo stream fino alla fine e lo mette nella stringa
    strXml = new StreamReader(buffer).readToEnd()
    ' chiude il MemoryStream
    buffer.close()
    ' ritorna la stringa che contiene l'XML
    return strXml
    End Function
End Class
<XmlRoot("Ordine")> Public Class Ordine
    <XmlArrayAttribute("Items")> Public Items() As Item
End Class
Public Class Item
    Public ID As Integer
    Public Prezzo As Integer
End Class

Potete subito notare la classe "Ordine" è l'elemento chiave della serializzazione in XML. Essa infatti è un tipo di dato complesso formato da un array di due Integer (ID, Prezzo).

Questa viene istanziata all'interno del metodo "xmlDocument()", in cui viene riempito l'array con dei valori ed infine serializzata in XML l'intera classe.

Immagine

2 pagine in totale: [1] 2 Avanti >>

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.

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