Condividi tramite


Procedura: leggere dati oggetto in un file XML (C# e Visual Basic)

Nell'esempio riportato di seguito vengono letti i dati di oggetti precedentemente scritti in un file XML utilizzando la classe XmlSerializer.

Esempio

Questo esempio di codice è anche disponibile come frammento di codice IntelliSense. Nella casella di selezione dei frammenti di codice si trova in XML. Per ulteriori informazioni, vedere Frammenti di codice.

Public Class Book
    Public Title As String 
End Class 

Public Sub ReadXML()
    Dim reader As New System.Xml.Serialization.XmlSerializer(GetType(Book))
    Dim file As New System.IO.StreamReader(
        "c:\temp\SerializationOverview.xml")
    Dim overview As Book
    overview = CType(reader.Deserialize(file), Book)
    Console.WriteLine(overview.Title)
End Sub
public class Book
{
    public String title;
}       

public void ReadXML()
{
    // First write something so that there is something to read ... 
    var b = new Book { title = "Serialization Overview" };
    var writer = new System.Xml.Serialization.XmlSerializer(typeof(Book));
    var wfile = new System.IO.StreamWriter(@"c:\temp\SerializationOverview.xml");
    writer.Serialize(wfile, b);
    wfile.Close();

    // Now we can read the serialized book ...
    System.Xml.Serialization.XmlSerializer reader = 
        new System.Xml.Serialization.XmlSerializer(typeof(Book));
    System.IO.StreamReader file = new System.IO.StreamReader(
        @"c:\temp\SerializationOverview.xml");
    Book overview =  (Book)reader.Deserialize(file);
    file.Close();

    Console.WriteLine(overview.title);

}

Compilazione del codice

Sostituire il nome del file "c:\IntroToVB.xml" con il nome del file contenente i dati serializzati. Per ulteriori informazioni sulla serializzazione dei dati, vedere Procedura: scrivere dati oggetto in un file XML (C# e Visual Basic).

È necessario che nella classe sia presente un costruttore pubblico senza parametri.

Solo le proprietà e i campi pubblici sono deserializzati.

Programmazione efficiente

Le seguenti condizioni possono generare un'eccezione:

  • Nella classe da deserializzare non è presente un costruttore pubblico senza parametri.

  • I dati del file non rappresentano dati dalla classe da deserializzare.

  • Il file non esiste (IOException).

Sicurezza

Verificare sempre gli input e non deserializzare mai dati da un'origine non attendibile. L'oggetto ricreato viene eseguito su un computer locale con le autorizzazioni del codice che lo ha deserializzato. Prima di usare i dati nell'applicazione verificare tutti gli input.

Vedere anche

Attività

Procedura: scrivere dati oggetto in un file XML (C# e Visual Basic)

Riferimenti

StreamWriter

Concetti

Guida per programmatori C#

Altre risorse

Serializzazione (C# e Visual Basic)

Guida per programmatori Visual Basic