Deserialize Method (TextReader)
Collapse the table of content
Expand the table of content

XmlSerializer.Deserialize Method (TextReader)

.NET Framework 1.1

Deserializes the XML document contained by the specified TextReader.

[Visual Basic]
Overloads Public Function Deserialize( _
   ByVal textReader As TextReader _
) As Object
[C#]
public object Deserialize(
 TextReader textReader
);
[C++]
public: Object* Deserialize(
 TextReader* textReader
);
[JScript]
public function Deserialize(
   textReader : TextReader
) : Object;

Parameters

textReader
The TextReader containing the XML document to deserialize.

Return Value

The Object being deserialized.

Remarks

Deserialization is the process of reading an XML instance document and constructing an object that is strongly typed to the XML Schema (XSD) of the document.

Before deserializing, an XmlSerializer must be constructed using the type of the object that is being deserialized.

Classes that inherit from TextReader include StringReader and StreamReader. If you are using a StreamReader to deserialize an object, you must construct the StreamReader with an appropriate Encoding. The encoding specified by the XML document will be ignored.

Note   To use the encoding specified by the XML document, use the Deserialize overload that takes an XmlReader instead. The XmlReader automatically detects and uses the encoding specified by the XML document.

Example

[Visual Basic, C#, C++] The following example deserializes an object using a TextReader object.

[Visual Basic] 
Imports System
Imports System.IO
Imports System.Text
Imports System.Xml.Serialization
Imports Microsoft.VisualBasic


' This is the class that will be deserialized.
Public Class OrderedItem
    Public ItemName As String
    Public Description As String
    Public UnitPrice As Decimal
    Public Quantity As Integer
    Public LineTotal As Decimal
    
    ' A custom method used to calculate price per item.
    Public Sub Calculate()
        LineTotal = UnitPrice * Quantity
    End Sub
End Class

Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        ' Read a purchase order.
        t.DeserializeObject("simple.xml")
    End Sub
    
    Private Sub DeserializeObject(filename As String)
        Console.WriteLine("Reading with TextReader")
        
        ' Create an instance of the XmlSerializer specifying type.
        Dim serializer As New XmlSerializer(GetType(OrderedItem))
        
        ' Create a TextReader to read the file. Specify an
        ' Encoding to use. 
        Dim reader As New StreamReader(filename, Encoding.Unicode)
        
        ' Declare an object variable of the type to be deserialized.
        Dim i As OrderedItem
        
        ' Use the Deserialize method to restore the object's state.
        i = CType(serializer.Deserialize(reader), OrderedItem)
        
        ' Write out the properties of the object.
        Console.Write(i.ItemName & ControlChars.Tab & _
                      i.Description & ControlChars.Tab & _
                      i.UnitPrice & ControlChars.Tab & _
                      i.Quantity & ControlChars.Tab & _
                      i.LineTotal)
    End Sub
End Class


[C#] 
using System;
using System.IO;
using System.Text;
using System.Xml.Serialization;

// This is the class that will be deserialized.
public class OrderedItem
{
   public string ItemName;
   public string Description;
   public decimal UnitPrice;
   public int Quantity;
   public decimal LineTotal;
   // A custom method used to calculate price per item.
   public void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
}
 
public class Test
{
   public static void Main()
   {
      Test t = new Test();
      // Read a purchase order.
      t.DeserializeObject("simple.xml");
   }
   private void DeserializeObject(string filename)
   {   
      Console.WriteLine("Reading with TextReader");

      // Create an instance of the XmlSerializer specifying type.
      XmlSerializer serializer = 
      new XmlSerializer(typeof(OrderedItem));

      /* Create a TextReader to read the file. Specify an
         Encoding to use. */
      TextReader reader = new StreamReader(filename, Encoding.Unicode);
          
      // Declare an object variable of the type to be deserialized.
      OrderedItem i;

      // Use the Deserialize method to restore the object's state.
      i = (OrderedItem) serializer.Deserialize(reader);

      // Write out the properties of the object.
      Console.Write(
      i.ItemName + "\t" +
      i.Description + "\t" +
      i.UnitPrice + "\t" +
      i.Quantity + "\t" +
      i.LineTotal);
   }
}


[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml::Serialization;

// This is the class that will be deserialized.
public __gc class OrderedItem
{
public:
   String* ItemName;
   String* Description;
   Decimal UnitPrice;
   int Quantity;
   Decimal LineTotal;
   // A custom method used to calculate price per item.
   void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
};

void DeserializeObject(String* filename)
{   
   Console::WriteLine(S"Reading with TextReader");

   // Create an instance of the XmlSerializer specifying type.
   XmlSerializer* serializer = 
      new XmlSerializer(__typeof(OrderedItem));

   /* Create a TextReader to read the file. Specify an
   Encoding to use. */
   TextReader* reader = new StreamReader(filename, Encoding::Unicode);

   // Declare an object variable of the type to be deserialized.
   OrderedItem* i;

   // Use the Deserialize method to restore the object's state.
   i = dynamic_cast<OrderedItem*> (serializer->Deserialize(reader));

   // Write out the properties of the object.
   Console::Write(S"{0}\t{1}\t{2}\t{3}\t{4}",
      i->ItemName, i->Description, __box(i->UnitPrice), __box(i->Quantity), i->LineTotal);
}

int main()
{
   // Read a purchase order.
   DeserializeObject(S"simple.xml");
}

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

XmlSerializer Class | XmlSerializer Members | System.Xml.Serialization Namespace | XmlSerializer.Deserialize Overload List | Introducing XML Serialization | Controlling XML Serialization Using Attributes | Examples of XML Serialization | The XML Schema Definition Tool and XML Serialization | CanDeserialize | Serialize

Show:
© 2016 Microsoft