XmlSerializer.Serialize Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сериализует объект в XML-документ.
Перегрузки
Serialize(XmlWriter, Object) |
Сериализует указанный Object и записывает XML-документ в файл с помощью заданного XmlWriter. |
Serialize(XmlWriter, Object, XmlSerializerNamespaces, String, String) |
Сериализует указанный Object и записывает XML-документ в файл с помощью заданных XmlWriter, пространства имен XML и кодирования. |
Serialize(XmlWriter, Object, XmlSerializerNamespaces, String) |
Сериализует указанный объект, записывает XML-документ в файл с помощью заданного XmlWriter и ссылается на заданные пространства имен и стиль кодирования. |
Serialize(XmlWriter, Object, XmlSerializerNamespaces) |
Сериализует указанный объект Object, записывает XML-документ в файл с помощью заданного XmlWriter и ссылается на заданные пространства имен. |
Serialize(TextWriter, Object, XmlSerializerNamespaces) |
Сериализует указанный объект Object, записывает XML-документ в файл с помощью заданного TextWriter и ссылается на заданные пространства имен. |
Serialize(Object, XmlSerializationWriter) |
Сериализует указанный Object и записывает XML-документ в файл с помощью заданного XmlSerializationWriter. |
Serialize(TextWriter, Object) |
Сериализует указанный Object и записывает XML-документ в файл с помощью заданного TextWriter. |
Serialize(Stream, Object) |
Сериализует указанный Object и записывает XML-документ в файл с помощью заданного Stream. |
Serialize(Stream, Object, XmlSerializerNamespaces) |
Сериализует указанный Object и записывает XML-документ в файл с помощью заданного Stream, ссылающегося на заданные пространства имен. |
Serialize(XmlWriter, Object)
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
public:
void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o);
public void Serialize (System.Xml.XmlWriter xmlWriter, object o);
public void Serialize (System.Xml.XmlWriter xmlWriter, object? o);
member this.Serialize : System.Xml.XmlWriter * obj -> unit
Public Sub Serialize (xmlWriter As XmlWriter, o As Object)
Параметры
Исключения
Возникла ошибка при сериализации. Исходное исключение доступно с помощью свойства InnerException.
Примеры
В следующем примере выполняется сериализация объекта с помощью XmlWriter.
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml;
using namespace System::Xml::Serialization;
// This is the class that will be serialized.
public ref 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 SerializeObject( String^ filename )
{
Console::WriteLine( "Writing With XmlTextWriter" );
XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
OrderedItem^ i = gcnew OrderedItem;
i->ItemName = "Widget";
i->Description = "Regular Widget";
i->Quantity = 10;
i->UnitPrice = (Decimal)2.30;
i->Calculate();
// Create an XmlTextWriter using a FileStream.
Stream^ fs = gcnew FileStream( filename,FileMode::Create );
XmlWriter^ writer = gcnew XmlTextWriter( fs,Encoding::Unicode );
// Serialize using the XmlTextWriter.
serializer->Serialize( writer, i );
writer->Close();
}
int main()
{
// Write a purchase order.
SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
// This is the class that will be serialized.
public class OrderedItem4
{
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 Test4
{
public static void Main()
{
Test4 t = new();
// Write a purchase order.
t.SerializeObject("simple.xml");
}
private void SerializeObject(string filename)
{
Console.WriteLine("Writing With XmlTextWriter");
XmlSerializer serializer = new(typeof(OrderedItem4));
OrderedItem4 i = new()
{
ItemName = "Widget",
Description = "Regular Widget",
Quantity = 10,
UnitPrice = (decimal)2.30
};
i.Calculate();
// Create an XmlTextWriter using a FileStream.
Stream fs = new FileStream(filename, FileMode.Create);
XmlTextWriter writer = new(fs, Encoding.Unicode);
// Serialize using the XmlTextWriter.
serializer.Serialize(writer, i);
writer.Close();
}
}
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Serialization
' This is the class that will be serialized.
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()
' Write a purchase order.
t.SerializeObject("simple.xml")
End Sub
Private Sub SerializeObject(ByVal filename As String)
Console.WriteLine("Writing With XmlTextWriter")
Dim serializer As New XmlSerializer(GetType(OrderedItem))
Dim i As New OrderedItem()
With i
.ItemName = "Widget"
.Description = "Regular Widget"
.Quantity = 10
.UnitPrice = CDec(2.3)
.Calculate()
End With
' Create an XmlTextWriter using a FileStream.
Dim fs As New FileStream(filename, FileMode.Create)
Dim writer As New XmlTextWriter(fs, Encoding.Unicode)
' Serialize using the XmlTextWriter.
serializer.Serialize(writer, i)
writer.Close()
End Sub
End Class
<?xml version="1.0"?>
<OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
<inventory:ItemName>Widget</inventory:ItemName>
<inventory:Description>Regular Widget</inventory:Description>
<money:UnitPrice>2.3</money:UnitPrice>
<inventory:Quantity>10</inventory:Quantity>
<money:LineTotal>23</money:LineTotal>
</OrderedItem>
Комментарии
Метод Serialize преобразует открытые поля и свойства чтения и записи объекта в XML. Он не преобразует методы, индексаторы, частные поля или свойства, доступные только для чтения.
В параметре xmlWriter
укажите объект, производный от абстрактного XmlWriter класса. Наследуется XmlTextWriter от XmlWriter.
Примечание
Не XmlSerializer может сериализовать следующие массивы ArrayList и массивы List<T>.
См. также раздел
- XmlAttributes
- Deserialize(Stream)
- Введение в сериализацию XML
- Практическое руководство. Указание имени альтернативного элемента для потока XML
- Управление сериализацией XML с использованием атрибутов
- Примеры сериализации XML
- Инструмент определения схемы XML (Xsd.exe)
Применяется к
Serialize(XmlWriter, Object, XmlSerializerNamespaces, String, String)
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
public:
void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces, System::String ^ encodingStyle, System::String ^ id);
public void Serialize (System.Xml.XmlWriter xmlWriter, object? o, System.Xml.Serialization.XmlSerializerNamespaces? namespaces, string? encodingStyle, string? id);
public void Serialize (System.Xml.XmlWriter xmlWriter, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces, string encodingStyle, string id);
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces * string * string -> unit
Public Sub Serialize (xmlWriter As XmlWriter, o As Object, namespaces As XmlSerializerNamespaces, encodingStyle As String, id As String)
Параметры
- o
- Object
Объект для сериализации.
- namespaces
- XmlSerializerNamespaces
Экземпляр XmlSerializerNamespaces
, содержащий пространства имен и префиксы для использования.
- encodingStyle
- String
Кодировка, используемая в документе.
- id
- String
Для SOAP-кодированных сообщений используется база для генерирования атрибутов идентификатора.
Комментарии
Параметр id предоставляет базовую строку, используемую для создания идентификаторов SOAP. По умолчанию это "id1", "id2" и т. д. Но если параметр имеет значение "myBase", созданные значения будут "myBaseid1", "myBaseid2" и т. д. Эта функция используется для создания уникальных значений идентификаторов во всем сообщении SOAP.
Применяется к
Serialize(XmlWriter, Object, XmlSerializerNamespaces, String)
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
Сериализует указанный объект, записывает XML-документ в файл с помощью заданного XmlWriter и ссылается на заданные пространства имен и стиль кодирования.
public:
void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces, System::String ^ encodingStyle);
public void Serialize (System.Xml.XmlWriter xmlWriter, object? o, System.Xml.Serialization.XmlSerializerNamespaces? namespaces, string? encodingStyle);
public void Serialize (System.Xml.XmlWriter xmlWriter, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces, string encodingStyle);
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces * string -> unit
Public Sub Serialize (xmlWriter As XmlWriter, o As Object, namespaces As XmlSerializerNamespaces, encodingStyle As String)
Параметры
- o
- Object
Объект для сериализации.
- namespaces
- XmlSerializerNamespaces
XmlSerializerNamespaces, на который ссылается объект.
- encodingStyle
- String
Стиль кодирования сериализованного XML.
Исключения
Возникла ошибка при сериализации. Исходное исключение доступно с помощью свойства InnerException.
Комментарии
При вызове Serialize метода открытые поля и свойства для чтения и записи объекта преобразуются в XML. Методы, индексаторы, частные поля и свойства только для чтения не сериализуются.
Используйте параметр , xmlWriter
чтобы указать объект, производный от абстрактного XmlWriter класса, предназначенного для записи XML-документов. Наследуется XmlTextWriter от XmlWriter.
Задайте для encodingStyle
параметра значение "http://schemas.xmlsoap.org/soap/encoding/" для кодировки SOAP версии 1.1; в противном случае задайте для него значение "http://www.w3.org/2001/12/soap-encoding" для кодировки SOAP версии 1.2.
Примечание
Не XmlSerializer может сериализовать следующие массивы ArrayList и массивы List<T>.
См. также раздел
- XmlAttributes
- Deserialize(Stream)
- Введение в сериализацию XML
- Практическое руководство. Указание имени альтернативного элемента для потока XML
- Управление сериализацией XML с использованием атрибутов
- Примеры сериализации XML
- Инструмент определения схемы XML (Xsd.exe)
Применяется к
Serialize(XmlWriter, Object, XmlSerializerNamespaces)
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
public:
void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces);
public void Serialize (System.Xml.XmlWriter xmlWriter, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces);
public void Serialize (System.Xml.XmlWriter xmlWriter, object? o, System.Xml.Serialization.XmlSerializerNamespaces? namespaces);
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces -> unit
Public Sub Serialize (xmlWriter As XmlWriter, o As Object, namespaces As XmlSerializerNamespaces)
Параметры
- namespaces
- XmlSerializerNamespaces
XmlSerializerNamespaces, на который ссылается объект.
Исключения
Возникла ошибка при сериализации. Исходное исключение доступно с помощью свойства InnerException.
Примеры
В следующем примере выполняется сериализация объекта с помощью XmlWriter. В примере также создается XmlSerializerNamespaces и добавляется два пространства имен в объект . Несколько экземпляров XmlElementAttribute класса применяются к членам класса, чтобы указать пространство имен для каждого элемента.
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml;
using namespace System::Xml::Serialization;
// This is the class that will be serialized.
public ref class OrderedItem
{
public:
[XmlElement(Namespace="http://www.cpandl.com")]
String^ ItemName;
[XmlElement(Namespace="http://www.cpandl.com")]
String^ Description;
[XmlElement(Namespace="http://www.cohowinery.com")]
Decimal UnitPrice;
[XmlElement(Namespace="http://www.cpandl.com")]
int Quantity;
[XmlElement(Namespace="http://www.cohowinery.com")]
Decimal LineTotal;
// A custom method used to calculate price per item.
void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
};
void SerializeObject( String^ filename )
{
Console::WriteLine( "Writing With XmlTextWriter" );
XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
OrderedItem^ i = gcnew OrderedItem;
i->ItemName = "Widget";
i->Description = "Regular Widget";
i->Quantity = 10;
i->UnitPrice = (Decimal)2.30;
i->Calculate();
// Create an XmlSerializerNamespaces object.
XmlSerializerNamespaces^ ns = gcnew XmlSerializerNamespaces;
// Add two namespaces with prefixes.
ns->Add( "inventory", "http://www.cpandl.com" );
ns->Add( "money", "http://www.cohowinery.com" );
// Create an XmlTextWriter using a FileStream.
Stream^ fs = gcnew FileStream( filename,FileMode::Create );
XmlWriter^ writer = gcnew XmlTextWriter( fs,gcnew UTF8Encoding );
// Serialize using the XmlTextWriter.
serializer->Serialize( writer, i, ns );
writer->Close();
}
int main()
{
// Write a purchase order.
SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
// This is the class that will be serialized.
public class OrderedItem5
{
[XmlElement(Namespace = "http://www.cpandl.com")]
public string ItemName;
[XmlElement(Namespace = "http://www.cpandl.com")]
public string Description;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal UnitPrice;
[XmlElement(Namespace = "http://www.cpandl.com")]
public int Quantity;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal LineTotal;
// A custom method used to calculate price per item.
public void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
}
public class Test5
{
public static void Main()
{
Test5 t = new();
// Write a purchase order.
t.SerializeObject("simple.xml");
}
private void SerializeObject(string filename)
{
Console.WriteLine("Writing With XmlTextWriter");
XmlSerializer serializer = new(typeof(OrderedItem5));
OrderedItem5 i = new()
{
ItemName = "Widget",
Description = "Regular Widget",
Quantity = 10,
UnitPrice = (decimal)2.30
};
i.Calculate();
// Create an XmlSerializerNamespaces object.
XmlSerializerNamespaces ns = new();
// Add two namespaces with prefixes.
ns.Add("inventory", "http://www.cpandl.com");
ns.Add("money", "http://www.cohowinery.com");
// Create an XmlTextWriter using a FileStream.
Stream fs = new FileStream(filename, FileMode.Create);
XmlTextWriter writer = new(fs, new UTF8Encoding());
// Serialize using the XmlTextWriter.
serializer.Serialize(writer, i, ns);
writer.Close();
}
}
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Serialization
' This is the class that will be serialized.
Public Class OrderedItem
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public ItemName As String
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Description As String
<XmlElement(Namespace := "http://www.cohowinery.com")> _
Public UnitPrice As Decimal
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Quantity As Integer
<XmlElement(Namespace := "http://www.cohowinery.com")> _
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()
' Write a purchase order.
t.SerializeObject("simple.xml")
End Sub
Private Sub SerializeObject(ByVal filename As String)
Console.WriteLine("Writing With XmlTextWriter")
Dim serializer As New XmlSerializer(GetType(OrderedItem))
Dim i As New OrderedItem()
With i
.ItemName = "Widget"
.Description = "Regular Widget"
.Quantity = 10
.UnitPrice = CDec(2.3)
.Calculate()
End With
' Create an XmlSerializerNamespaces object.
Dim ns As New XmlSerializerNamespaces()
' Add two namespaces with prefixes.
ns.Add("inventory", "http://www.cpandl.com")
ns.Add("money", "http://www.cohowinery.com")
' Create an XmlTextWriter using a FileStream.
Dim fs As New FileStream(filename, FileMode.Create)
Dim writer As New XmlTextWriter(fs, New UTF8Encoding())
' Serialize using the XmlTextWriter.
serializer.Serialize(writer, i, ns)
writer.Close()
End Sub
End Class
<?xml version="1.0"?>
<OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
<inventory:ItemName>Widget</inventory:ItemName>
<inventory:Description>Regular Widget</inventory:Description>
<money:UnitPrice>2.3</money:UnitPrice>
<inventory:Quantity>10</inventory:Quantity>
<money:LineTotal>23</money:LineTotal>
</OrderedItem>
Комментарии
При вызове Serialize метода открытые поля и свойства для чтения и записи объекта преобразуются в XML. Методы, индексаторы, частные поля и свойства только для чтения не сериализуются.
Используйте параметр , xmlWriter
чтобы указать объект, производный от абстрактного XmlWriter класса, предназначенного для записи XML-документов. Наследуется XmlTextWriter от XmlWriter.
Примечание
Не XmlSerializer может сериализовать следующие массивы ArrayList и массивы List<T>.
См. также раздел
- XmlAttributes
- Deserialize(Stream)
- Введение в сериализацию XML
- Практическое руководство. Указание имени альтернативного элемента для потока XML
- Управление сериализацией XML с использованием атрибутов
- Примеры сериализации XML
- Инструмент определения схемы XML (Xsd.exe)
Применяется к
Serialize(TextWriter, Object, XmlSerializerNamespaces)
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
Сериализует указанный объект Object, записывает XML-документ в файл с помощью заданного TextWriter и ссылается на заданные пространства имен.
public:
void Serialize(System::IO::TextWriter ^ textWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces);
public void Serialize (System.IO.TextWriter textWriter, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces);
public void Serialize (System.IO.TextWriter textWriter, object? o, System.Xml.Serialization.XmlSerializerNamespaces? namespaces);
member this.Serialize : System.IO.TextWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces -> unit
Public Sub Serialize (textWriter As TextWriter, o As Object, namespaces As XmlSerializerNamespaces)
Параметры
- textWriter
- TextWriter
TextWriter, используемый для записи XML-документа.
- namespaces
- XmlSerializerNamespaces
XmlSerializerNamespaces, содержащий пространства имен для сгенерированного XML-документа.
Исключения
Возникла ошибка при сериализации. Исходное исключение доступно с помощью свойства InnerException.
Примеры
В следующем примере выполняется сериализация объекта с помощью TextWriter. В примере также создается XmlSerializerNamespaces объект и к объекту добавляются два пространства имен. Класс, определяющий сериализованный объект, также присваивается атрибутами XmlElementAttribute для указания пространства имен для каждого элемента.
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
// This is the class that will be serialized.
public ref class OrderedItem
{
public:
[XmlElement(Namespace="http://www.cpandl.com")]
String^ ItemName;
[XmlElement(Namespace="http://www.cpandl.com")]
String^ Description;
[XmlElement(Namespace="http://www.cohowinery.com")]
Decimal UnitPrice;
[XmlElement(Namespace="http://www.cpandl.com")]
int Quantity;
[XmlElement(Namespace="http://www.cohowinery.com")]
Decimal LineTotal;
// A custom method used to calculate price per item.
void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
};
void SerializeObject( String^ filename )
{
Console::WriteLine( "Writing With TextWriter" );
// Create an XmlSerializer instance using the type.
XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
OrderedItem^ i = gcnew OrderedItem;
i->ItemName = "Widget";
i->Description = "Regular Widget";
i->Quantity = 10;
i->UnitPrice = (Decimal)2.30;
i->Calculate();
// Create an XmlSerializerNamespaces object.
XmlSerializerNamespaces^ ns = gcnew XmlSerializerNamespaces;
// Add two namespaces with prefixes.
ns->Add( "inventory", "http://www.cpandl.com" );
ns->Add( "money", "http://www.cohowinery.com" );
// Create a StreamWriter to write with.
TextWriter^ writer = gcnew StreamWriter( filename );
/* Serialize using the object using the TextWriter
and namespaces. */
serializer->Serialize( writer, i, ns );
writer->Close();
}
int main()
{
// Write a purchase order.
SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;
// This is the class that will be serialized.
public class OrderedItem1
{
[XmlElement(Namespace = "http://www.cpandl.com")]
public string ItemName;
[XmlElement(Namespace = "http://www.cpandl.com")]
public string Description;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal UnitPrice;
[XmlElement(Namespace = "http://www.cpandl.com")]
public int Quantity;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal LineTotal;
// A custom method used to calculate price per item.
public void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
}
public class Test1
{
public static void Main(string[] args)
{
Test1 t = new();
// Write a purchase order.
t.SerializeObject("simple.xml");
}
private void SerializeObject(string filename)
{
Console.WriteLine("Writing With TextWriter");
// Create an XmlSerializer instance using the type.
XmlSerializer serializer = new(typeof(OrderedItem1));
OrderedItem1 i = new()
{
ItemName = "Widget",
Description = "Regular Widget",
Quantity = 10,
UnitPrice = (decimal)2.30
};
i.Calculate();
// Create an XmlSerializerNamespaces object.
XmlSerializerNamespaces ns = new();
// Add two namespaces with prefixes.
ns.Add("inventory", "http://www.cpandl.com");
ns.Add("money", "http://www.cohowinery.com");
// Create a StreamWriter to write with.
StreamWriter writer = new(filename);
/* Serialize using the object using the TextWriter
and namespaces. */
serializer.Serialize(writer, i, ns);
writer.Close();
}
}
Imports System.IO
Imports System.Xml.Serialization
' This is the class that will be serialized.
Public Class OrderedItem
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public ItemName As String
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Description As String
<XmlElement(Namespace := "http://www.cohowinery.com")> _
Public UnitPrice As Decimal
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Quantity As Integer
<XmlElement(Namespace := "http://www.cohowinery.com")> _
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()
' Write a purchase order.
t.SerializeObject("simple.xml")
End Sub
Private Sub SerializeObject(ByVal filename As String)
Console.WriteLine("Writing With TextWriter")
' Create an XmlSerializer instance using the type.
Dim serializer As New XmlSerializer(GetType(OrderedItem))
Dim i As New OrderedItem()
i.ItemName = "Widget"
i.Description = "Regular Widget"
i.Quantity = 10
i.UnitPrice = CDec(2.3)
i.Calculate()
' Create an XmlSerializerNamespaces object.
Dim ns As New XmlSerializerNamespaces()
' Add two namespaces with prefixes.
ns.Add("inventory", "http://www.cpandl.com")
ns.Add("money", "http://www.cohowinery.com")
' Create a StreamWriter to write with.
Dim writer As New StreamWriter(filename)
' Serialize using the object using the TextWriter
' and namespaces.
serializer.Serialize(writer, i, ns)
writer.Close()
End Sub
End Class
<?xml version="1.0"?>
<OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
<inventory:ItemName>Widget</inventory:ItemName>
<inventory:Description>Regular Widget</inventory:Description>
<money:UnitPrice>2.3</money:UnitPrice>
<inventory:Quantity>10</inventory:Quantity>
<money:LineTotal>23</money:LineTotal>
</OrderedItem>
Комментарии
При вызове Serialize метода открытые поля и свойства чтения и записи объекта преобразуются в XML. Методы, индексаторы, частные поля и свойства только для чтения не сериализуются.
Используйте параметр , textWriter
чтобы указать объект, производный от абстрактного TextWriter класса. Классы, производные от TextWriter класса, включают:
Примечание
Не XmlSerializer может сериализовать следующие массивы ArrayList и массивы List<T>.
См. также раздел
- XmlAttributes
- Введение в сериализацию XML
- Практическое руководство. Указание имени альтернативного элемента для потока XML
- Управление сериализацией XML с использованием атрибутов
- Примеры сериализации XML
- Инструмент определения схемы XML (Xsd.exe)
Применяется к
Serialize(Object, XmlSerializationWriter)
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
Сериализует указанный Object и записывает XML-документ в файл с помощью заданного XmlSerializationWriter.
protected:
virtual void Serialize(System::Object ^ o, System::Xml::Serialization::XmlSerializationWriter ^ writer);
protected virtual void Serialize (object? o, System.Xml.Serialization.XmlSerializationWriter writer);
protected virtual void Serialize (object o, System.Xml.Serialization.XmlSerializationWriter writer);
abstract member Serialize : obj * System.Xml.Serialization.XmlSerializationWriter -> unit
override this.Serialize : obj * System.Xml.Serialization.XmlSerializationWriter -> unit
Protected Overridable Sub Serialize (o As Object, writer As XmlSerializationWriter)
Параметры
- writer
- XmlSerializationWriter
XmlSerializationWriter, используемый для записи XML-документа.
Исключения
Предпринимаются любые попытки вызова данного метода, когда метод не переопределен в классе-потомке.
Применяется к
Serialize(TextWriter, Object)
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
Сериализует указанный Object и записывает XML-документ в файл с помощью заданного TextWriter.
public:
void Serialize(System::IO::TextWriter ^ textWriter, System::Object ^ o);
public void Serialize (System.IO.TextWriter textWriter, object o);
public void Serialize (System.IO.TextWriter textWriter, object? o);
member this.Serialize : System.IO.TextWriter * obj -> unit
Public Sub Serialize (textWriter As TextWriter, o As Object)
Параметры
- textWriter
- TextWriter
TextWriter, используемый для записи XML-документа.
Примеры
В следующем примере выполняется сериализация объекта с помощью TextWriter.
#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 serialized.
public ref 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 SerializeObject( String^ filename )
{
Console::WriteLine( "Writing With TextWriter" );
XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
OrderedItem^ i = gcnew OrderedItem;
i->ItemName = "Widget";
i->Description = "Regular Widget";
i->Quantity = 10;
i->UnitPrice = (Decimal)2.30;
i->Calculate();
/* Create a StreamWriter to write with. First create a FileStream
object, and create the StreamWriter specifying an Encoding to use. */
FileStream^ fs = gcnew FileStream( filename,FileMode::Create );
TextWriter^ writer = gcnew StreamWriter( fs,gcnew UTF8Encoding );
// Serialize using the XmlTextWriter.
serializer->Serialize( writer, i );
writer->Close();
}
int main()
{
// Write a purchase order.
SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Text;
using System.Xml.Serialization;
// This is the class that will be serialized.
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(string[] args)
{
Test t = new();
// Write a purchase order.
t.SerializeObject("simple.xml");
}
private void SerializeObject(string filename)
{
Console.WriteLine("Writing With TextWriter");
XmlSerializer serializer = new(typeof(OrderedItem));
OrderedItem i = new()
{
ItemName = "Widget",
Description = "Regular Widget",
Quantity = 10,
UnitPrice = (decimal)2.30
};
i.Calculate();
/* Create a StreamWriter to write with. First create a FileStream
object, and create the StreamWriter specifying an Encoding to use. */
FileStream fs = new(filename, FileMode.Create);
StreamWriter writer = new(fs, new UTF8Encoding());
// Serialize using the XmlTextWriter.
serializer.Serialize(writer, i);
writer.Close();
}
}
Imports System.IO
Imports System.Text
Imports System.Xml.Serialization
' This is the class that will be serialized.
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()
' Write a purchase order.
t.SerializeObject("simple.xml")
End Sub
Private Sub SerializeObject(ByVal filename As String)
Console.WriteLine("Writing With TextWriter")
Dim serializer As New XmlSerializer(GetType(OrderedItem))
Dim i As New OrderedItem()
With i
.ItemName = "Widget"
.Description = "Regular Widget"
.Quantity = 10
.UnitPrice = CDec(2.3)
.Calculate()
End With
' Create a StreamWriter to write with. First create a FileStream
' object, and create the StreamWriter specifying an Encoding to use.
Dim fs As New FileStream(filename, FileMode.Create)
Dim writer As New StreamWriter(fs, New UTF8Encoding())
' Serialize using the XmlTextWriter.
serializer.Serialize(writer, i)
writer.Close()
End Sub
End Class
<?xml version="1.0"?>
<OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
<inventory:ItemName>Widget</inventory:ItemName>
<inventory:Description>Regular Widget</inventory:Description>
<money:UnitPrice>2.3</money:UnitPrice>
<inventory:Quantity>10</inventory:Quantity>
<money:LineTotal>23</money:LineTotal>
</OrderedItem>
Комментарии
Метод Serialize преобразует открытые поля и свойства чтения и записи объекта в XML. Он не преобразует методы, индексаторы, закрытые поля или свойства, доступные только для чтения.
В параметре textWriter
укажите объект, производный от абстрактного TextWriter класса. Классы, производные от :TextWriter
Примечание
Не XmlSerializer может сериализовать следующие массивы ArrayList и массивы List<T>.
См. также раздел
- XmlAttributes
- Введение в сериализацию XML
- Практическое руководство. Указание имени альтернативного элемента для потока XML
- Управление сериализацией XML с использованием атрибутов
- Примеры сериализации XML
- Инструмент определения схемы XML (Xsd.exe)
Применяется к
Serialize(Stream, Object)
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
public:
void Serialize(System::IO::Stream ^ stream, System::Object ^ o);
public void Serialize (System.IO.Stream stream, object o);
public void Serialize (System.IO.Stream stream, object? o);
member this.Serialize : System.IO.Stream * obj -> unit
Public Sub Serialize (stream As Stream, o As Object)
Параметры
Исключения
Возникла ошибка при сериализации. Исходное исключение доступно с помощью свойства InnerException.
Примеры
В следующем примере выполняется сериализация объекта с помощью Stream объекта .
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
// This is the class that will be serialized.
public ref 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 SerializeObject( String^ filename )
{
Console::WriteLine( "Writing With Stream" );
XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
OrderedItem^ i = gcnew OrderedItem;
i->ItemName = "Widget";
i->Description = "Regular Widget";
i->Quantity = 10;
i->UnitPrice = (Decimal)2.30;
i->Calculate();
// Create a FileStream to write with.
Stream^ writer = gcnew FileStream( filename,FileMode::Create );
// Serialize the object, and close the TextWriter
serializer->Serialize( writer, i );
writer->Close();
}
int main()
{
// Write a purchase order.
SerializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;
// This is the class that will be serialized.
public class OrderedItem2
{
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 Test2
{
public static void Main(string[] args)
{
Test2 t = new();
// Write a purchase order.
t.SerializeObject("simple.xml");
}
private void SerializeObject(string filename)
{
Console.WriteLine("Writing With Stream");
XmlSerializer serializer = new(typeof(OrderedItem2));
OrderedItem2 i = new()
{
ItemName = "Widget",
Description = "Regular Widget",
Quantity = 10,
UnitPrice = (decimal)2.30
};
i.Calculate();
// Create a FileStream to write with.
FileStream writer = new(filename, FileMode.Create);
// Serialize the object, and close the TextWriter
serializer.Serialize(writer, i);
writer.Close();
}
}
Imports System.IO
Imports System.Xml.Serialization
' This is the class that will be serialized.
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()
' Write a purchase order.
t.SerializeObject("simple.xml")
End Sub
Private Sub SerializeObject(ByVal filename As String)
Console.WriteLine("Writing With Stream")
Dim serializer As New XmlSerializer(GetType(OrderedItem))
Dim i As New OrderedItem()
With i
.ItemName = "Widget"
.Description = "Regular Widget"
.Quantity = 10
.UnitPrice = CDec(2.3)
.Calculate()
End With
' Create a FileStream to write with.
Dim writer As New FileStream(filename, FileMode.Create)
' Serialize the object, and close the TextWriter
serializer.Serialize(writer, i)
writer.Close()
End Sub
End Class
<?xml version="1.0"?>
<OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
<inventory:ItemName>Widget</inventory:ItemName>
<inventory:Description>Regular Widget</inventory:Description>
<money:UnitPrice>2.3</money:UnitPrice>
<inventory:Quantity>10</inventory:Quantity>
<money:LineTotal>23</money:LineTotal>
</OrderedItem>
Комментарии
Метод Serialize преобразует открытые поля и свойства чтения и записи объекта в XML. Он не преобразует методы, индексаторы, закрытые поля или свойства, доступные только для чтения.
В параметре stream
укажите объект, производный от абстрактного Stream класса. Классы, производные от :Stream
Примечание
Не XmlSerializer может сериализовать следующие массивы ArrayList и массивы List<T>.
См. также раздел
- XmlAttributes
- Deserialize(Stream)
- Введение в сериализацию XML
- Практическое руководство. Указание имени альтернативного элемента для потока XML
- Управление сериализацией XML с использованием атрибутов
- Примеры сериализации XML
- Инструмент определения схемы XML (Xsd.exe)
Применяется к
Serialize(Stream, Object, XmlSerializerNamespaces)
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
- Исходный код:
- XmlSerializer.cs
public:
void Serialize(System::IO::Stream ^ stream, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces);
public void Serialize (System.IO.Stream stream, object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces);
public void Serialize (System.IO.Stream stream, object? o, System.Xml.Serialization.XmlSerializerNamespaces? namespaces);
member this.Serialize : System.IO.Stream * obj * System.Xml.Serialization.XmlSerializerNamespaces -> unit
Public Sub Serialize (stream As Stream, o As Object, namespaces As XmlSerializerNamespaces)
Параметры
- namespaces
- XmlSerializerNamespaces
XmlSerializerNamespaces, на который ссылается объект.
Исключения
Возникла ошибка при сериализации. Исходное исключение доступно с помощью свойства InnerException.
Примеры
В следующем примере выполняется сериализация объекта с Stream объектом . В примере также создается XmlSerializerNamespaces и добавляется два пространства имен в объект . Классу, определяющему сериализованный объект, также присваиваются XmlElementAttribute атрибуты для указания пространства имен для каждого элемента.
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
// This is the class that will be serialized.
public ref class OrderedItem
{
public:
[XmlElement(Namespace="http://www.cpandl.com")]
String^ ItemName;
[XmlElement(Namespace="http://www.cpandl.com")]
String^ Description;
[XmlElement(Namespace="http://www.cohowinery.com")]
Decimal UnitPrice;
[XmlElement(Namespace="http://www.cpandl.com")]
int Quantity;
[XmlElement(Namespace="http://www.cohowinery.com")]
Decimal LineTotal;
// A custom method used to calculate price per item.
void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
};
void SerializeObject( String^ filename )
{
Console::WriteLine( "Writing With Stream" );
XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
OrderedItem^ i = gcnew OrderedItem;
i->ItemName = "Widget";
i->Description = "Regular Widget";
i->Quantity = 10;
i->UnitPrice = (Decimal)2.30;
i->Calculate();
// Create an XmlSerializerNamespaces object.
XmlSerializerNamespaces^ ns = gcnew XmlSerializerNamespaces;
// Add two prefix-namespace pairs.
ns->Add( "inventory", "http://www.cpandl.com" );
ns->Add( "money", "http://www.cohowinery.com" );
// Create a FileStream to write with.
Stream^ writer = gcnew FileStream( filename,FileMode::Create );
// Serialize the object, and close the TextWriter
serializer->Serialize( writer, i, ns );
writer->Close();
}
void DeserializeObject( String^ filename )
{
Console::WriteLine( "Reading with Stream" );
// Create an instance of the XmlSerializer.
XmlSerializer^ serializer = gcnew XmlSerializer( OrderedItem::typeid );
// Writing the file requires a Stream.
Stream^ reader = gcnew FileStream( filename,FileMode::Open );
// Declare an object variable of the type to be deserialized.
OrderedItem^ i;
/* Use the Deserialize method to restore the object's state
using data from the XML document. */
i = dynamic_cast<OrderedItem^>(serializer->Deserialize( reader ));
// Write out the properties of the object.
Console::Write( "{0}\t{1}\t{2}\t{3}\t{4}", i->ItemName, i->Description, i->UnitPrice, i->Quantity, i->LineTotal );
}
int main()
{
// Write a purchase order.
SerializeObject( "simple.xml" );
DeserializeObject( "simple.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;
// This is the class that will be serialized.
public class OrderedItem3
{
[XmlElement(Namespace = "http://www.cpandl.com")]
public string ItemName;
[XmlElement(Namespace = "http://www.cpandl.com")]
public string Description;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal UnitPrice;
[XmlElement(Namespace = "http://www.cpandl.com")]
public int Quantity;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal LineTotal;
// A custom method used to calculate price per item.
public void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
}
public class Test3
{
public static void Main()
{
Test3 t = new();
// Write a purchase order.
t.SerializeObject("simple.xml");
t.DeserializeObject("simple.xml");
}
private void SerializeObject(string filename)
{
Console.WriteLine("Writing With Stream");
XmlSerializer serializer =
new(typeof(OrderedItem3));
OrderedItem3 i = new()
{
ItemName = "Widget",
Description = "Regular Widget",
Quantity = 10,
UnitPrice = (decimal)2.30
};
i.Calculate();
// Create an XmlSerializerNamespaces object.
XmlSerializerNamespaces ns = new();
// Add two prefix-namespace pairs.
ns.Add("inventory", "http://www.cpandl.com");
ns.Add("money", "http://www.cohowinery.com");
// Create a FileStream to write with.
FileStream writer = new(filename, FileMode.Create);
// Serialize the object, and close the TextWriter
serializer.Serialize(writer, i, ns);
writer.Close();
}
private void DeserializeObject(string filename)
{
Console.WriteLine("Reading with Stream");
// Create an instance of the XmlSerializer.
XmlSerializer serializer = new(typeof(OrderedItem3));
// Writing the file requires a Stream.
Stream reader = new FileStream(filename, FileMode.Open);
// Declare an object variable of the type to be deserialized.
OrderedItem3 i;
/* Use the Deserialize method to restore the object's state
using data from the XML document. */
i = (OrderedItem3)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);
}
}
Imports System.IO
Imports System.Xml.Serialization
' This is the class that will be serialized.
Public Class OrderedItem
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public ItemName As String
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Description As String
<XmlElement(Namespace := "http://www.cohowinery.com")> _
Public UnitPrice As Decimal
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Quantity As Integer
<XmlElement(Namespace := "http://www.cohowinery.com")> _
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()
' Write a purchase order.
t.SerializeObject("simple.xml")
t.DeserializeObject("simple.xml")
End Sub
Private Sub SerializeObject(ByVal filename As String)
Console.WriteLine("Writing With Stream")
Dim serializer As New XmlSerializer(GetType(OrderedItem))
Dim i As New OrderedItem()
With i
.ItemName = "Widget"
.Description = "Regular Widget"
.Quantity = 10
.UnitPrice = CDec(2.3)
.Calculate()
End With
' Create an XmlSerializerNamespaces object.
Dim ns As New XmlSerializerNamespaces()
' Add two prefix-namespace pairs.
ns.Add("inventory", "http://www.cpandl.com")
ns.Add("money", "http://www.cohowinery.com")
' Create a FileStream to write with.
Dim writer As New FileStream(filename, FileMode.Create)
' Serialize the object, and close the TextWriter
serializer.Serialize(writer, i, ns)
writer.Close()
End Sub
Private Sub DeserializeObject(ByVal filename As String)
Console.WriteLine("Reading with Stream")
' Create an instance of the XmlSerializer.
Dim serializer As New XmlSerializer(GetType(OrderedItem))
' Writing the file requires a Stream.
Dim reader As New FileStream(filename, FileMode.Open)
' Declare an object variable of the type to be deserialized.
Dim i As OrderedItem
' Use the Deserialize method to restore the object's state
' using data from the XML document.
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
Комментарии
При вызове Serialize метода открытые поля и свойства чтения и записи объекта преобразуются в XML. Методы, индексаторы, закрытые поля и свойства только для чтения не сериализуются.
Используйте параметр , stream
чтобы указать объект, производный от абстрактного Stream класса, предназначенного для записи в потоки. Классы, производные от класса , Stream включают:
Примечание
Не XmlSerializer может сериализовать следующие массивы ArrayList и массивы List<T>.
См. также раздел
- XmlAttributes
- Deserialize(Stream)
- Введение в сериализацию XML
- Практическое руководство. Указание имени альтернативного элемента для потока XML
- Управление сериализацией XML с использованием атрибутов
- Примеры сериализации XML
- Инструмент определения схемы XML (Xsd.exe)