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

Stefano Giannone

di , in ASP.NET,

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

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

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

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I tutorial
Top Ten Articoli
Articoli via e-mail

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

Iscrivi subito! »»»

PROVIDER ASP.NET

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

In primo piano

I più letti di oggi

Media
In evidenza
MISC