XmlSerializer Kelas

Definisi

Menserialisasikan dan mendeserialisasi objek ke dalam dan dari dokumen XML. memungkinkan XmlSerializer Anda mengontrol bagaimana objek dikodekan ke dalam XML.

public ref class XmlSerializer
public class XmlSerializer
type XmlSerializer = class
Public Class XmlSerializer
Warisan
XmlSerializer

Contoh

Contoh berikut berisi dua kelas utama: PurchaseOrder dan Test. Kelas PurchaseOrder berisi informasi tentang satu pembelian. Kelas Test berisi metode yang membuat pesanan pembelian, dan yang membaca pesanan pembelian yang dibuat.

using System;
using System.Xml;
using System.Xml.Serialization;
using System.IO;

/* The XmlRootAttribute allows you to set an alternate name
   (PurchaseOrder) of the XML element, the element namespace; by
   default, the XmlSerializer uses the class name. The attribute
   also allows you to set the XML namespace for the element.  Lastly,
   the attribute sets the IsNullable property, which specifies whether
   the xsi:null attribute appears if the class instance is set to
   a null reference. */
[XmlRootAttribute("PurchaseOrder", Namespace="http://www.cpandl.com",
IsNullable = false)]
public class PurchaseOrder
{
   public Address ShipTo;
   public string OrderDate;
   /* The XmlArrayAttribute changes the XML element name
    from the default of "OrderedItems" to "Items". */
   [XmlArrayAttribute("Items")]
   public OrderedItem[] OrderedItems;
   public decimal SubTotal;
   public decimal ShipCost;
   public decimal TotalCost;
}

public class Address
{
   /* The XmlAttribute instructs the XmlSerializer to serialize the Name
      field as an XML attribute instead of an XML element (the default
      behavior). */
   [XmlAttribute]
   public string Name;
   public string Line1;

   /* Setting the IsNullable property to false instructs the
      XmlSerializer that the XML attribute will not appear if
      the City field is set to a null reference. */
   [XmlElementAttribute(IsNullable = false)]
   public string City;
   public string State;
   public string Zip;
}

public class OrderedItem
{
   public string ItemName;
   public string Description;
   public decimal UnitPrice;
   public int Quantity;
   public decimal LineTotal;

   /* Calculate is a custom method that calculates the price per item,
      and stores the value in a field. */
   public void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
}

public class Test
{
   public static void Main()
   {
      // Read and write purchase orders.
      Test t = new Test();
      t.CreatePO("po.xml");
      t.ReadPO("po.xml");
   }

   private void CreatePO(string filename)
   {
      // Create an instance of the XmlSerializer class;
      // specify the type of object to serialize.
      XmlSerializer serializer =
      new XmlSerializer(typeof(PurchaseOrder));
      TextWriter writer = new StreamWriter(filename);
      PurchaseOrder po=new PurchaseOrder();

      // Create an address to ship and bill to.
      Address billAddress = new Address();
      billAddress.Name = "Teresa Atkinson";
      billAddress.Line1 = "1 Main St.";
      billAddress.City = "AnyTown";
      billAddress.State = "WA";
      billAddress.Zip = "00000";
      // Set ShipTo and BillTo to the same addressee.
      po.ShipTo = billAddress;
      po.OrderDate = System.DateTime.Now.ToLongDateString();

      // Create an OrderedItem object.
      OrderedItem i1 = new OrderedItem();
      i1.ItemName = "Widget S";
      i1.Description = "Small widget";
      i1.UnitPrice = (decimal) 5.23;
      i1.Quantity = 3;
      i1.Calculate();

      // Insert the item into the array.
      OrderedItem [] items = {i1};
      po.OrderedItems = items;
      // Calculate the total cost.
      decimal subTotal = new decimal();
      foreach(OrderedItem oi in items)
      {
         subTotal += oi.LineTotal;
      }
      po.SubTotal = subTotal;
      po.ShipCost = (decimal) 12.51;
      po.TotalCost = po.SubTotal + po.ShipCost;
      // Serialize the purchase order, and close the TextWriter.
      serializer.Serialize(writer, po);
      writer.Close();
   }

   protected void ReadPO(string filename)
   {
      // Create an instance of the XmlSerializer class;
      // specify the type of object to be deserialized.
      XmlSerializer serializer = new XmlSerializer(typeof(PurchaseOrder));
      /* If the XML document has been altered with unknown
      nodes or attributes, handle them with the
      UnknownNode and UnknownAttribute events.*/
      serializer.UnknownNode+= new
      XmlNodeEventHandler(serializer_UnknownNode);
      serializer.UnknownAttribute+= new
      XmlAttributeEventHandler(serializer_UnknownAttribute);

      // A FileStream is needed to read the XML document.
      FileStream fs = new FileStream(filename, FileMode.Open);
      // Declare an object variable of the type to be deserialized.
      PurchaseOrder po;
      /* Use the Deserialize method to restore the object's state with
      data from the XML document. */
      po = (PurchaseOrder) serializer.Deserialize(fs);
      // Read the order date.
      Console.WriteLine ("OrderDate: " + po.OrderDate);

      // Read the shipping address.
      Address shipTo = po.ShipTo;
      ReadAddress(shipTo, "Ship To:");
      // Read the list of ordered items.
      OrderedItem [] items = po.OrderedItems;
      Console.WriteLine("Items to be shipped:");
      foreach(OrderedItem oi in items)
      {
         Console.WriteLine("\t"+
         oi.ItemName + "\t" +
         oi.Description + "\t" +
         oi.UnitPrice + "\t" +
         oi.Quantity + "\t" +
         oi.LineTotal);
      }
      // Read the subtotal, shipping cost, and total cost.
      Console.WriteLine("\t\t\t\t\t Subtotal\t" + po.SubTotal);
      Console.WriteLine("\t\t\t\t\t Shipping\t" + po.ShipCost);
      Console.WriteLine("\t\t\t\t\t Total\t\t" + po.TotalCost);
   }

   protected void ReadAddress(Address a, string label)
   {
      // Read the fields of the Address object.
      Console.WriteLine(label);
      Console.WriteLine("\t"+ a.Name );
      Console.WriteLine("\t" + a.Line1);
      Console.WriteLine("\t" + a.City);
      Console.WriteLine("\t" + a.State);
      Console.WriteLine("\t" + a.Zip );
      Console.WriteLine();
   }

   private void serializer_UnknownNode
   (object sender, XmlNodeEventArgs e)
   {
      Console.WriteLine("Unknown Node:" +   e.Name + "\t" + e.Text);
   }

   private void serializer_UnknownAttribute
   (object sender, XmlAttributeEventArgs e)
   {
      System.Xml.XmlAttribute attr = e.Attr;
      Console.WriteLine("Unknown attribute " +
      attr.Name + "='" + attr.Value + "'");
   }
}
Imports System.Xml
Imports System.Xml.Serialization
Imports System.IO

' The XmlRootAttribute allows you to set an alternate name
' (PurchaseOrder) of the XML element, the element namespace; by
' default, the XmlSerializer uses the class name. The attribute
' also allows you to set the XML namespace for the element.  Lastly,
' the attribute sets the IsNullable property, which specifies whether
' the xsi:null attribute appears if the class instance is set to
' a null reference. 
<XmlRootAttribute("PurchaseOrder", _
 Namespace := "http://www.cpandl.com", IsNullable := False)> _
Public Class PurchaseOrder
    
    Public ShipTo As Address
    Public OrderDate As String
    ' The XmlArrayAttribute changes the XML element name
    ' from the default of "OrderedItems" to "Items". 
    <XmlArrayAttribute("Items")> _
    Public OrderedItems() As OrderedItem
    Public SubTotal As Decimal
    Public ShipCost As Decimal
    Public TotalCost As Decimal
End Class


Public Class Address
    ' The XmlAttribute instructs the XmlSerializer to serialize the Name
    ' field as an XML attribute instead of an XML element (the default
    ' behavior). 
    <XmlAttribute()> _
    Public Name As String
    Public Line1 As String
    
    ' Setting the IsNullable property to false instructs the
    ' XmlSerializer that the XML attribute will not appear if
    ' the City field is set to a null reference. 
    <XmlElementAttribute(IsNullable := False)> _
    Public City As String
    Public State As String
    Public Zip As String
End Class


Public Class OrderedItem
    Public ItemName As String
    Public Description As String
    Public UnitPrice As Decimal
    Public Quantity As Integer
    Public LineTotal As Decimal
    
    
    ' Calculate is a custom method that calculates the price per item,
    ' and stores the value in a field. 
    Public Sub Calculate()
        LineTotal = UnitPrice * Quantity
    End Sub
End Class


Public Class Test
    
   Public Shared Sub Main()
      ' Read and write purchase orders.
      Dim t As New Test()
      t.CreatePO("po.xml")
      t.ReadPO("po.xml")
   End Sub
    
   Private Sub CreatePO(filename As String)
      ' Create an instance of the XmlSerializer class;
      ' specify the type of object to serialize.
      Dim serializer As New XmlSerializer(GetType(PurchaseOrder))
      Dim writer As New StreamWriter(filename)
      Dim po As New PurchaseOrder()
        
      ' Create an address to ship and bill to.
      Dim billAddress As New Address()
      billAddress.Name = "Teresa Atkinson"
      billAddress.Line1 = "1 Main St."
      billAddress.City = "AnyTown"
      billAddress.State = "WA"
      billAddress.Zip = "00000"
      ' Set ShipTo and BillTo to the same addressee.
      po.ShipTo = billAddress
      po.OrderDate = System.DateTime.Now.ToLongDateString()
        
      ' Create an OrderedItem object.
      Dim i1 As New OrderedItem()
      i1.ItemName = "Widget S"
      i1.Description = "Small widget"
      i1.UnitPrice = CDec(5.23)
      i1.Quantity = 3
      i1.Calculate()
        
      ' Insert the item into the array.
      Dim items(0) As OrderedItem
      items(0) = i1
      po.OrderedItems = items
      ' Calculate the total cost.
      Dim subTotal As New Decimal()
      Dim oi As OrderedItem
      For Each oi In  items
         subTotal += oi.LineTotal
      Next oi
      po.SubTotal = subTotal
      po.ShipCost = CDec(12.51)
      po.TotalCost = po.SubTotal + po.ShipCost
      ' Serialize the purchase order, and close the TextWriter.
      serializer.Serialize(writer, po)
      writer.Close()
   End Sub
    
   Protected Sub ReadPO(filename As String)
      ' Create an instance of the XmlSerializer class;
      ' specify the type of object to be deserialized.
      Dim serializer As New XmlSerializer(GetType(PurchaseOrder))
      ' If the XML document has been altered with unknown
      ' nodes or attributes, handle them with the
      ' UnknownNode and UnknownAttribute events.
      AddHandler serializer.UnknownNode, AddressOf serializer_UnknownNode
      AddHandler serializer.UnknownAttribute, AddressOf serializer_UnknownAttribute
      
      ' A FileStream is needed to read the XML document.
      Dim fs As New FileStream(filename, FileMode.Open)
      ' Declare an object variable of the type to be deserialized.
      Dim po As PurchaseOrder
      ' Use the Deserialize method to restore the object's state with
      ' data from the XML document. 
      po = CType(serializer.Deserialize(fs), PurchaseOrder)
      ' Read the order date.
      Console.WriteLine(("OrderDate: " & po.OrderDate))
        
      ' Read the shipping address.
      Dim shipTo As Address = po.ShipTo
      ReadAddress(shipTo, "Ship To:")
      ' Read the list of ordered items.
      Dim items As OrderedItem() = po.OrderedItems
      Console.WriteLine("Items to be shipped:")
      Dim oi As OrderedItem
      For Each oi In  items
         Console.WriteLine((ControlChars.Tab & oi.ItemName & ControlChars.Tab & _
         oi.Description & ControlChars.Tab & oi.UnitPrice & ControlChars.Tab & _
         oi.Quantity & ControlChars.Tab & oi.LineTotal))
      Next oi
      ' Read the subtotal, shipping cost, and total cost.
      Console.WriteLine(( New String(ControlChars.Tab, 5) & _
      " Subtotal"  & ControlChars.Tab & po.SubTotal))
      Console.WriteLine(New String(ControlChars.Tab, 5) & _
      " Shipping" & ControlChars.Tab & po.ShipCost )
      Console.WriteLine( New String(ControlChars.Tab, 5) & _
      " Total" &  New String(ControlChars.Tab, 2) & po.TotalCost)
    End Sub
    
    Protected Sub ReadAddress(a As Address, label As String)
      ' Read the fields of the Address object.
      Console.WriteLine(label)
      Console.WriteLine(ControlChars.Tab & a.Name)
      Console.WriteLine(ControlChars.Tab & a.Line1)
      Console.WriteLine(ControlChars.Tab & a.City)
      Console.WriteLine(ControlChars.Tab & a.State)
      Console.WriteLine(ControlChars.Tab & a.Zip)
      Console.WriteLine()
    End Sub
        
    Private Sub serializer_UnknownNode(sender As Object, e As XmlNodeEventArgs)
        Console.WriteLine(("Unknown Node:" & e.Name & ControlChars.Tab & e.Text))
    End Sub
    
    
    Private Sub serializer_UnknownAttribute(sender As Object, e As XmlAttributeEventArgs)
        Dim attr As System.Xml.XmlAttribute = e.Attr
        Console.WriteLine(("Unknown attribute " & attr.Name & "='" & attr.Value & "'"))
    End Sub
End Class

Keterangan

Serialisasi XML adalah proses mengonversi properti dan bidang publik objek ke format serial (dalam hal ini, XML) untuk penyimpanan atau transportasi. Deserialisasi membuat ulang objek dalam status aslinya dari output XML. Anda dapat menganggap serialisasi sebagai cara menyimpan status objek ke dalam aliran atau buffer. Misalnya, ASP.NET menggunakan XmlSerializer kelas untuk mengodekan pesan layanan Web XML.

Data dalam objek Anda dijelaskan menggunakan konstruksi bahasa pemrograman seperti kelas, bidang, properti, jenis primitif, array, dan bahkan XML yang disematkan dalam bentuk XmlElement objek atau XmlAttribute . Anda memiliki opsi untuk membuat kelas Anda sendiri, diannotasi dengan atribut, atau menggunakan Alat Definisi Skema XML (Xsd.exe) untuk menghasilkan kelas berdasarkan dokumen definisi Skema XML (XSD) yang ada. Jika Anda memiliki Skema XML, Anda dapat menjalankan Xsd.exe untuk menghasilkan kelas-kelas yang bertipe kuat terhadap skema dan diberi anotasi dengan atribut untuk mematuhi skema saat diserialisasikan.

Untuk mentransfer data antara objek dan XML memerlukan pemetaan dari konstruksi bahasa pemrograman ke skema XML dan dari skema XML ke konstruksi bahasa pemrograman. Alat XmlSerializer dan alat terkait seperti Xsd.exe menyediakan jembatan antara kedua teknologi ini saat proses desain dan runtime. Pada waktu desain, gunakan Xsd.exe untuk menghasilkan dokumen skema XML (.xsd) dari kelas kustom Anda atau untuk menghasilkan kelas dari skema tertentu. Dalam kedua kasus, kelas diannotasikan dengan atribut kustom untuk menginstruksikan XmlSerializer cara memetakan antara sistem skema XML dan runtime bahasa umum. Pada runtime, instans kelas dapat diserialisasikan ke dalam dokumen XML yang mengikuti skema yang diberikan. Demikian juga, dokumen XML ini dapat dideserialisasi ke dalam objek runtime. Perhatikan bahwa skema XML bersifat opsional, dan tidak diperlukan pada waktu desain atau runtime.

Kontrol XML yang dihasilkan

Untuk mengontrol XML yang dihasilkan, Anda dapat menerapkan atribut khusus ke kelas dan anggota. Misalnya, untuk menentukan nama elemen XML yang berbeda, terapkan XmlElementAttribute ke bidang atau properti publik, dan atur ElementName properti . Untuk daftar lengkap atribut serupa, lihat Atribut yang Mengontrol Serialisasi XML. Anda juga dapat menerapkan IXmlSerializable antarmuka untuk mengontrol output XML.

Jika XML yang dihasilkan harus sesuai dengan bagian 5 dari dokumen World Wide Consortium, Simple Object Access Protocol (SOAP) 1.1, Anda harus membuat XmlSerializer dengan XmlTypeMapping. Untuk lebih mengontrol XML SOAP yang dikodekan, gunakan atribut yang tercantum dalam Atribut yang Mengontrol Serialisasi SOAP yang Dikodekan.

Dengan XmlSerializer, Anda dapat memanfaatkan kelas yang ditik dengan kuat dan tetap memiliki fleksibilitas XML. Dengan menggunakan bidang atau properti jenis XmlElement, XmlAttribute atau XmlNode di kelas yang ditik dengan kuat, Anda dapat membaca bagian dokumen XML langsung ke objek XML.

Jika Anda bekerja dengan skema XML yang dapat diperluas, Anda juga dapat menggunakan XmlAnyElementAttribute atribut dan XmlAnyAttributeAttribute untuk menserialisasikan dan mendeserialisasi elemen atau atribut yang tidak ditemukan dalam skema asli. Untuk menggunakan objek, terapkan XmlAnyElementAttribute ke bidang yang mengembalikan array XmlElement objek, atau menerapkan XmlAnyAttributeAttribute ke bidang yang mengembalikan array XmlAttribute objek.

Jika properti atau bidang mengembalikan objek kompleks (seperti array atau instans kelas), XmlSerializer akan mengonversinya menjadi elemen yang terletak dalam dokumen XML utama. Misalnya, kelas pertama dalam kode berikut mengembalikan instans kelas kedua.

Public Class MyClass
    Public MyObjectProperty As MyObject
End Class

Public Class MyObject
    Public ObjectName As String
End Class
public class MyClass
{
    public MyObject MyObjectProperty;
}
public class MyObject
{
    public string ObjectName;
}

Output XML yang diserialisasikan terlihat seperti ini:

<MyClass>
  <MyObjectProperty>
  <ObjectName>My String</ObjectName>
  </MyObjectProperty>
</MyClass>

Jika skema menyertakan elemen yang opsional (minOccurs = '0'), atau jika skema menyertakan nilai default, Anda memiliki dua opsi. Salah satu opsinya adalah menggunakan System.ComponentModel.DefaultValueAttribute untuk menentukan nilai default, seperti yang ditunjukkan dalam kode berikut.

Public Class PurchaseOrder
    <System.ComponentModel.DefaultValueAttribute ("2002")> _
    Public Year As String
End Class
public class PurchaseOrder
{
    [System.ComponentModel.DefaultValueAttribute ("2002")]
    public string Year;
}

Opsi lain adalah menggunakan pola khusus untuk membuat bidang Boolean yang dikenali oleh XmlSerializer, dan menerapkan XmlIgnoreAttribute pada bidang tersebut. Pola dibuat dalam bentuk propertyNameSpecified. Misalnya, jika ada bidang bernama "MyFirstName" Anda juga akan membuat bidang bernama "MyFirstNameSpecified" yang menginstruksikan XmlSerializer apakah akan menghasilkan elemen XML bernama "MyFirstName". Hal ini ditunjukkan di contoh berikut.

Public Class OptionalOrder
    ' This field's value should not be serialized
    ' if it is uninitialized.
    Public FirstOrder As String

    ' Use the XmlIgnoreAttribute to ignore the
    ' special field named "FirstOrderSpecified".
    <System.Xml.Serialization.XmlIgnoreAttribute> _
    Public FirstOrderSpecified As Boolean
End Class
public class OptionalOrder
{
    // This field should not be serialized
    // if it is uninitialized.
    public string FirstOrder;

    // Use the XmlIgnoreAttribute to ignore the
    // special field named "FirstOrderSpecified".
    [System.Xml.Serialization.XmlIgnoreAttribute]
    public bool FirstOrderSpecified;
}

Mengesampingkan serialisasi default

Anda juga dapat mengambil alih serialisasi sekumpulan objek dan bidang dan propertinya dengan membuat salah satu atribut yang sesuai, dan menambahkannya ke instans XmlAttributes kelas. Mengambil alih serialisasi dengan cara ini memiliki dua kegunaan: pertama, Anda dapat mengontrol dan menambah serialisasi objek yang ditemukan dalam DLL, bahkan jika Anda tidak memiliki akses ke sumber; kedua, Anda dapat membuat satu set kelas yang dapat diserialisasikan, tetapi menserialisasikan objek dengan berbagai cara. Untuk detail selengkapnya, lihat XmlAttributeOverrides kelas dan Cara: Mengontrol Serialisasi Kelas Turunan.

Untuk membuat serialisasi objek, panggil Serialize metode . Untuk mendeserialisasi objek, panggil Deserialize metode .

Untuk menambahkan namespace XML ke dokumen XML, lihat XmlSerializerNamespaces.

Note

memberikan XmlSerializer perlakuan khusus pada kelas yang mengimplementasikan IEnumerable atau ICollection. Kelas yang menerapkan IEnumerable harus menerapkan metode publik Add yang mengambil satu parameter. Parameter metode Add harus memiliki jenis yang sama seperti yang dikembalikan dari properti Current pada nilai yang dikembalikan dari GetEnumerator, atau dari salah satu basis jenis tersebut. Kelas yang mengimplementasikan ICollection (seperti CollectionBase) selain IEnumerable harus memiliki properti terindeks publik Item (pengindeks di C#) yang mengambil bilangan bulat, dan harus memiliki properti publik Count dengan bilangan bulat jenis. Parameter pada metode Add harus memiliki jenis yang sama seperti yang dikembalikan oleh properti Item, atau salah satu basis dari jenis tersebut. Untuk kelas yang mengimplementasikan ICollection, nilai yang akan diserialisasikan diambil dari properti terindeks Item , bukan dengan memanggil GetEnumerator.

Anda harus memiliki izin untuk menulis ke direktori sementara (seperti yang ditentukan oleh variabel lingkungan TEMP) untuk mendeserialisasi objek.

Rakitan yang dihasilkan secara dinamis

Untuk meningkatkan performa, infrastruktur serialisasi XML secara dinamis menghasilkan rakitan untuk menserialisasikan dan mendeserialisasi jenis yang ditentukan. Infrastruktur menemukan dan menggunakan kembali rakitan tersebut. Perilaku ini hanya terjadi saat menggunakan konstruktor berikut:

XmlSerializer.XmlSerializer(Type)

XmlSerializer.XmlSerializer(Type, String)

Jika Anda menggunakan salah satu konstruktor lain, beberapa versi rakitan yang sama dihasilkan dan tidak pernah dibongkar, yang menghasilkan kebocoran memori dan performa yang buruk. Solusi termudah adalah menggunakan salah satu dari dua konstruktor yang disebutkan sebelumnya. Jika tidak, Anda harus menyimpan rakitan dalam Hashtable, seperti yang ditunjukkan dalam contoh berikut.

Hashtable serializers = new Hashtable();

// Use the constructor that takes a type and XmlRootAttribute.
XmlSerializer s = new XmlSerializer(typeof(MyClass), myRoot);

// Implement a method named GenerateKey that creates unique keys
// for each instance of the XmlSerializer. The code should take
// into account all parameters passed to the XmlSerializer
// constructor.
object key = GenerateKey(typeof(MyClass), myRoot);

// Check the local cache for a matching serializer.
XmlSerializer ser = (XmlSerializer)serializers[key];
if (ser == null)
{
    ser = new XmlSerializer(typeof(MyClass), myRoot);
    // Cache the serializer.
    serializers[key] = ser;
}

// Use the serializer to serialize or deserialize.
Dim serializers As New Hashtable()

' Use the constructor that takes a type and XmlRootAttribute.
Dim s As New XmlSerializer(GetType([MyClass]), myRoot)

' Implement a method named GenerateKey that creates unique keys
' for each instance of the XmlSerializer. The code should take
' into account all parameters passed to the XmlSerializer
' constructor.
Dim key As Object = GenerateKey(GetType([MyClass]), myRoot)

' Check the local cache for a matching serializer.
Dim ser As XmlSerializer = CType(serializers(key), XmlSerializer)

If ser Is Nothing Then
    ser = New XmlSerializer(GetType([MyClass]), myRoot)
    ' Cache the serializer.
    serializers(key) = ser
End If

' Use the serializer to serialize or deserialize.

Serialisasi ArrayList dan daftar generik

Tidak dapat melakukan serialisasi atau deserialisasi berikut ini:

Serialisasi enumerasi Long tanpa tanda

XmlSerializer tidak dapat diinstansiasi untuk membuat serial enumerasi jika kondisi berikut ini benar: Enumerasi berjenis unsigned long (ulong dalam C#) dan enumerasi berisi anggota mana pun dengan nilai yang lebih besar dari 9.223.372.036.854.775.807. Misalnya, berikut ini tidak dapat diserialisasikan.

public enum LargeNumbers: ulong
{
    a = 9223372036854775808
}
// At runtime, the following code will fail.
xmlSerializer mySerializer=new XmlSerializer(typeof(LargeNumbers));

Jenis usang

Kelas XmlSerializer tidak menserialisasikan objek yang ditandai sebagai [Obsolete].

Konstruktor

Nama Deskripsi
XmlSerializer()

Menginisialisasi instans baru dari kelas XmlSerializer.

XmlSerializer(Type, String)

Menginisialisasi instans XmlSerializer baru kelas yang dapat membuat serialisasi objek dari jenis yang ditentukan ke dalam dokumen XML, dan mendeserialisasi dokumen XML ke dalam objek dari jenis yang ditentukan. Menentukan namespace default untuk semua elemen XML.

XmlSerializer(Type, Type[])

Menginisialisasi instans XmlSerializer baru kelas yang dapat membuat serialisasi objek dari jenis yang ditentukan ke dalam dokumen XML, dan mendeserialisasi dokumen XML ke dalam objek dari jenis tertentu. Jika properti atau bidang mengembalikan array, extraTypes parameter menentukan objek yang dapat disisipkan ke dalam array.

XmlSerializer(Type, XmlAttributeOverrides, Type[], XmlRootAttribute, String, String, Evidence)
Kedaluwarsa.

Menginisialisasi instans XmlSerializer baru kelas yang dapat membuat serialisasi objek dari jenis yang ditentukan ke dalam instans dokumen XML, dan mendeserialisasi instans dokumen XML ke dalam objek dari jenis yang ditentukan. Kelebihan beban ini memungkinkan Anda untuk menyediakan jenis lain yang dapat ditemui selama operasi serialisasi atau deserialisasi, serta namespace default untuk semua elemen XML, kelas untuk digunakan sebagai elemen akar XML, lokasinya, dan kredensial yang diperlukan untuk akses.

XmlSerializer(Type, XmlAttributeOverrides, Type[], XmlRootAttribute, String, String)

Menginisialisasi instans XmlSerializer baru kelas yang dapat membuat serialisasi objek jenis Object ke dalam instans dokumen XML, dan mendeserialisasi instans dokumen XML ke dalam objek jenis Object. Setiap objek yang akan diserialisasikan dapat dengan sendirinya berisi instans kelas, yang menimpa kelebihan beban ini dengan kelas lain. Kelebihan beban ini juga menentukan namespace default untuk semua elemen XML dan kelas yang akan digunakan sebagai elemen akar XML.

XmlSerializer(Type, XmlAttributeOverrides, Type[], XmlRootAttribute, String)

Menginisialisasi instans XmlSerializer baru kelas yang dapat membuat serialisasi objek jenis Object ke dalam instans dokumen XML, dan mendeserialisasi instans dokumen XML ke dalam objek jenis Object. Setiap objek yang akan diserialisasikan dapat dengan sendirinya berisi instans kelas, yang menimpa kelebihan beban ini dengan kelas lain. Kelebihan beban ini juga menentukan namespace default untuk semua elemen XML dan kelas yang akan digunakan sebagai elemen akar XML.

XmlSerializer(Type, XmlAttributeOverrides)

Menginisialisasi instans XmlSerializer baru kelas yang dapat membuat serialisasi objek dari jenis yang ditentukan ke dalam dokumen XML, dan mendeserialisasi dokumen XML ke dalam objek dari jenis yang ditentukan. Setiap objek yang akan diserialisasikan dapat dengan sendirinya berisi instans kelas, yang dapat ditimpa kelebihan beban ini dengan kelas lain.

XmlSerializer(Type, XmlRootAttribute)

Menginisialisasi instans XmlSerializer baru kelas yang dapat membuat serialisasi objek dari jenis yang ditentukan ke dalam dokumen XML, dan mendeserialisasi dokumen XML ke dalam objek dari jenis yang ditentukan. Ini juga menentukan kelas yang akan digunakan sebagai elemen akar XML.

XmlSerializer(Type)

Menginisialisasi instans XmlSerializer baru kelas yang dapat membuat serialisasi objek dari jenis yang ditentukan ke dalam dokumen XML, dan mendeserialisasi dokumen XML ke dalam objek dari jenis yang ditentukan.

XmlSerializer(XmlTypeMapping)

Menginisialisasi instans XmlSerializer kelas menggunakan objek yang memetakan satu jenis ke jenis lainnya.

Metode

Nama Deskripsi
CanDeserialize(XmlReader)

Mendapatkan nilai yang menunjukkan apakah ini XmlSerializer dapat mendeserialisasi dokumen XML tertentu.

CreateReader()

Mengembalikan objek yang digunakan untuk membaca dokumen XML yang akan diserialisasikan.

CreateWriter()

Saat ditimpa di kelas turunan, mengembalikan penulis yang digunakan untuk menserialisasikan objek.

Deserialize(Stream)

Mendeserialisasi dokumen XML yang dimuat oleh .Stream

Deserialize(TextReader)

Mendeserialisasi dokumen XML yang dimuat oleh .TextReader

Deserialize(XmlReader, String, XmlDeserializationEvents)

Mendeserialisasi objek menggunakan data yang dimuat oleh XmlReader.

Deserialize(XmlReader, String)

Mendeserialisasi dokumen XML yang dimuat oleh gaya yang ditentukan XmlReader dan pengodean.

Deserialize(XmlReader, XmlDeserializationEvents)

Mendeserialisasi dokumen XML yang dimuat oleh yang ditentukan XmlReader dan memungkinkan penimpaan peristiwa yang terjadi selama deserialisasi.

Deserialize(XmlReader)

Mendeserialisasi dokumen XML yang dimuat oleh .XmlReader

Deserialize(XmlSerializationReader)

Mendeserialisasi dokumen XML yang dimuat oleh .XmlSerializationReader

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
FromMappings(XmlMapping[], Evidence)
Kedaluwarsa.

Mengembalikan instans kelas yang XmlSerializer dibuat dari pemetaan satu jenis XML ke jenis XML lainnya.

FromMappings(XmlMapping[], Type)

Mengembalikan instans XmlSerializer kelas dari pemetaan yang ditentukan.

FromMappings(XmlMapping[])

Mengembalikan array XmlSerializer objek yang dibuat dari array XmlTypeMapping objek.

FromTypes(Type[])

Mengembalikan array XmlSerializer objek yang dibuat dari array jenis.

GenerateSerializer(Type[], XmlMapping[], CompilerParameters)

Mengembalikan rakitan yang berisi serializer buatan kustom yang digunakan untuk menserialisasikan atau mendeserialisasi jenis atau jenis yang ditentukan, menggunakan pemetaan dan pengaturan dan opsi pengkompilasi yang ditentukan.

GenerateSerializer(Type[], XmlMapping[])

Mengembalikan rakitan yang berisi serializer buatan kustom yang digunakan untuk menserialisasikan atau mendeserialisasi jenis atau jenis yang ditentukan, menggunakan pemetaan yang ditentukan.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
GetXmlSerializerAssemblyName(Type, String)

Mengembalikan nama rakitan yang berisi serializer untuk jenis yang ditentukan dalam namespace yang ditentukan.

GetXmlSerializerAssemblyName(Type)

Mengembalikan nama rakitan yang berisi satu atau beberapa versi yang XmlSerializer dibuat khusus untuk menserialisasikan atau mendeserialisasi jenis yang ditentukan.

MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
Serialize(Object, XmlSerializationWriter)

Menserialisasikan dokumen XML yang ditentukan Object dan menulis ke file menggunakan XmlSerializationWriter.

Serialize(Stream, Object, XmlSerializerNamespaces)

Menserialisasikan dokumen XML yang ditentukan Object dan menulis ke file menggunakan yang ditentukan yang mereferensikan Stream namespace yang ditentukan.

Serialize(Stream, Object)

Menserialisasikan dokumen XML yang ditentukan Object dan menulis ke file menggunakan Stream.

Serialize(TextWriter, Object, XmlSerializerNamespaces)

Menserialisasikan dokumen XML yang ditentukan Object dan menulis ke file menggunakan namespace yang ditentukan TextWriter dan mereferensikan namespace yang ditentukan.

Serialize(TextWriter, Object)

Menserialisasikan dokumen XML yang ditentukan Object dan menulis ke file menggunakan TextWriter.

Serialize(XmlWriter, Object, XmlSerializerNamespaces, String, String)

Menserialisasikan dokumen XML yang ditentukan Object dan menulis ke file menggunakan namespace xml, dan pengodean yang ditentukan XmlWriter.

Serialize(XmlWriter, Object, XmlSerializerNamespaces, String)

Menserialisasikan objek yang ditentukan dan menulis dokumen XML ke file menggunakan yang ditentukan dan mereferensikan XmlWriter namespace dan gaya pengodean yang ditentukan.

Serialize(XmlWriter, Object, XmlSerializerNamespaces)

Menserialisasikan dokumen XML yang ditentukan Object dan menulis ke file menggunakan namespace yang ditentukan XmlWriter dan mereferensikan namespace yang ditentukan.

Serialize(XmlWriter, Object)

Menserialisasikan dokumen XML yang ditentukan Object dan menulis ke file menggunakan XmlWriter.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Acara

Nama Deskripsi
UnknownAttribute

Terjadi ketika XmlSerializer menemukan atribut XML dari jenis yang tidak diketahui selama deserialisasi.

UnknownElement

Terjadi ketika XmlSerializer menemukan elemen XML dari jenis yang tidak diketahui selama deserialisasi.

UnknownNode

Terjadi ketika XmlSerializer menemukan simpul XML dengan jenis yang tidak diketahui selama deserialisasi.

UnreferencedObject

Terjadi selama deserialisasi aliran XML yang dikodekan SOAP, ketika XmlSerializer menemukan jenis yang dikenali yang tidak digunakan atau tidak direferensikan.

Berlaku untuk

Keamanan Thread

Jenis ini aman untuk utas.

Lihat juga