XmlSerializer Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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, |
| 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
- XmlAttributeOverrides
- XmlAttributes
- XmlText
- Memperkenalkan Serialisasi XML
- Cara: Menentukan Nama Elemen Alternatif untuk Aliran XML
- Mengontrol Serialisasi XML Menggunakan Atribut
- Contoh Serialisasi XML
- Alat Definisi Skema XML (Xsd.exe)
- Cara: Mengontrol Serialisasi Kelas Turunan
- <Elemen dateTimeSerialization>
- <Elemen xmlSerializer>