XmlSerializer.Serialize 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将对象序列化为 XML 文档。
重载
| 名称 | 说明 |
|---|---|
| Serialize(XmlWriter, Object) | |
| Serialize(XmlWriter, Object, XmlSerializerNamespaces, String, String) |
序列化指定的 Object XML 文档,并使用指定的 XmlWriterXML 命名空间和编码将 XML 文档写入文件。 |
| Serialize(XmlWriter, Object, XmlSerializerNamespaces, String) |
序列化指定的对象,并使用指定的 XmlWriter 命名空间和编码样式将 XML 文档写入文件。 |
| Serialize(XmlWriter, Object, XmlSerializerNamespaces) |
序列化指定的 Object XML 文档,并使用指定的 XmlWriter 命名空间将 XML 文档写入文件并引用指定的命名空间。 |
| Serialize(TextWriter, Object, XmlSerializerNamespaces) |
序列化指定的 Object XML 文档,并使用指定的 TextWriter 命名空间将 XML 文档写入文件并引用指定的命名空间。 |
| Serialize(Object, XmlSerializationWriter) |
使用指定的Object文件序列化指定的 XmlSerializationWriter XML 文档并将 XML 文档写入文件。 |
| Serialize(TextWriter, Object) |
使用指定的Object文件序列化指定的 TextWriter XML 文档并将 XML 文档写入文件。 |
| Serialize(Stream, Object) | |
| Serialize(Stream, Object, XmlSerializerNamespaces) |
Serialize(XmlWriter, Object)
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
public:
void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o);
public void Serialize(System.Xml.XmlWriter xmlWriter, object o);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
public void Serialize(System.Xml.XmlWriter xmlWriter, object? o);
public void Serialize(System.Xml.XmlWriter xmlWriter, object? o);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
public void Serialize(System.Xml.XmlWriter xmlWriter, object? o);
member this.Serialize : System.Xml.XmlWriter * obj -> unit
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.Xml.XmlWriter * obj -> unit
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.Xml.XmlWriter * obj -> unit
Public Sub Serialize (xmlWriter As XmlWriter, o As Object)
参数
- 属性
例外
序列化期间发生错误。 使用属性提供 InnerException 原始异常。
示例
以下示例使用 XmlWriter.
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)
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
public:
void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces, System::String ^ encodingStyle, System::String ^ id);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces * string * string -> unit
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces * string * string -> unit
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
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 属性的基。
- 属性
注解
ID 参数提供用于创建 SOAP ID 的基字符串。 默认情况下,这些为“id1”、“id2”等。 但是,如果参数设置为“myBase”,则生成的值为“myBaseid1”、“myBaseid2”等。 此功能用于在整个 SOAP 消息中创建唯一 ID 值。
适用于
Serialize(XmlWriter, Object, XmlSerializerNamespaces, String)
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
序列化指定的对象,并使用指定的 XmlWriter 命名空间和编码样式将 XML 文档写入文件。
public:
void Serialize(System::Xml::XmlWriter ^ xmlWriter, System::Object ^ o, System::Xml::Serialization::XmlSerializerNamespaces ^ namespaces, System::String ^ encodingStyle);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces * string -> unit
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces * string -> unit
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
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)
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- 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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.Xml.XmlWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces -> unit
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
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;
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)
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
序列化指定的 Object XML 文档,并使用指定的 TextWriter 命名空间将 XML 文档写入文件并引用指定的命名空间。
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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.IO.TextWriter * obj * System.Xml.Serialization.XmlSerializerNamespaces -> unit
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
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;
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>
另请参阅
适用于
Serialize(Object, XmlSerializationWriter)
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
使用指定的Object文件序列化指定的 XmlSerializationWriter XML 文档并将 XML 文档写入文件。
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)
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
使用指定的Object文件序列化指定的 TextWriter XML 文档并将 XML 文档写入文件。
public:
void Serialize(System::IO::TextWriter ^ textWriter, System::Object ^ o);
public void Serialize(System.IO.TextWriter textWriter, object o);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
public void Serialize(System.IO.TextWriter textWriter, object? o);
public void Serialize(System.IO.TextWriter textWriter, object? o);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
public void Serialize(System.IO.TextWriter textWriter, object? o);
member this.Serialize : System.IO.TextWriter * obj -> unit
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.IO.TextWriter * obj -> unit
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.IO.TextWriter * obj -> unit
Public Sub Serialize (textWriter As TextWriter, o As Object)
参数
- textWriter
- TextWriter
TextWriter用于编写 XML 文档。
- 属性
示例
以下示例使用 TextWriter.
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>
另请参阅
适用于
Serialize(Stream, Object)
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
public:
void Serialize(System::IO::Stream ^ stream, System::Object ^ o);
public void Serialize(System.IO.Stream stream, object o);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
public void Serialize(System.IO.Stream stream, object? o);
public void Serialize(System.IO.Stream stream, object? o);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
public void Serialize(System.IO.Stream stream, object? o);
member this.Serialize : System.IO.Stream * obj -> unit
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.IO.Stream * obj -> unit
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.IO.Stream * obj -> unit
Public Sub Serialize (stream As Stream, o As Object)
参数
- 属性
例外
序列化期间发生错误。 使用属性提供 InnerException 原始异常。
示例
以下示例使用 Stream 对象序列化对象。
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)
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- XmlSerializer.cs
- Source:
- 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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")]
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
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XML serializer relies on dynamic code generation which is not available with Ahead of Time compilation")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
member this.Serialize : System.IO.Stream * obj * System.Xml.Serialization.XmlSerializerNamespaces -> unit
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly")>]
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;
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)