XmlSerializer — System.Xml.Serialization (system.xml.dll) class
public class XmlSerializer { // Public Constructors public XmlSerializer( Type type); public XmlSerializer( Type type, string defaultNamespace); public XmlSerializer( Type type, Type[ ] extraTypes); public XmlSerializer( Type type, XmlAttributeOverrides overrides); public XmlSerializer( Type type, XmlAttributeOverrides overrides, Type[ ] extraTypes, XmlRootAttribute root, string defaultNamespace); public XmlSerializer( Type type, XmlRootAttribute root); public XmlSerializer( XmlTypeMapping xmlTypeMapping); // Protected Constructors protected XmlSerializer( ); // Public Static Methods public static XmlSerializer[ ] FromMappings( XmlMapping[ ] mappings); public static XmlSerializer[ ] FromTypes( Type[ ] types); // Public Instance Methods public virtual bool CanDeserialize( System.Xml.XmlReader xmlReader); public object Deserialize( System.IO.Stream stream); public object Deserialize( System.IO.TextReader textReader); public object Deserialize( System.Xml.XmlReader xmlReader); public void Serialize( System.IO.Stream stream, object o); public void Serialize( System.IO.Stream stream, object o, XmlSerializerNamespaces namespaces); public void Serialize( System.IO.TextWriter textWriter, object o); public void Serialize( System.IO.TextWriter textWriter, object o, XmlSerializerNamespaces namespaces); public void Serialize( System.Xml.XmlWriter xmlWriter, object o); public void Serialize( System.Xml.XmlWriter xmlWriter, object o, XmlSerializerNamespaces namespaces); // Protected Instance Methods protected virtual XmlSerializationReader CreateReader( ); protected virtual XmlSerializationWriter CreateWriter( ); protected virtual object Deserialize( XmlSerializationReader reader); protected virtual void Serialize( object o, XmlSerializationWriter writer); // Events public event XmlAttributeEventHandler UnknownAttribute; public event XmlElementEventHandler UnknownElement; public event XmlNodeEventHandler UnknownNode; public event UnreferencedObjectEventHandler UnreferencedObject; }
This type provides the core
functionality of the System.Xml.Serialization
namespace. Various constructors are used to create an instance based
on a System.Type
or a
XmlTypeMapping
, and some include parameters to
provide extra information on how the object is to be serialized. The
staticFromTypes( )
method will create an array of
XmlSerializer
instances suitable for serializing
and deserializing an array of System.Type
instances passed in.
The Serialize(
)
method does the work of encoding to XML an instance of an
object of the type the XmlSerializer
is made for.
The serialization is performed according to the attributes placed on
the object and its members, as well as any
XmlAttributeOverrides
passed into the constructor.
An object can be serialized to any
System.IO.Stream
,
System.IO.TextWriter
, or
System.Xml.XmlWriter
instance.
The staticDeserialize(
)
method decodes an object from XML into an instance of the
object in memory. The XML object can be deserialized from any
System.IO.Stream
,
System.IO.TextReader
, or
System.Xml.XmlReader
instance that contains XML.
Additionally, if using a System.Xml.XmlReader
, the
CanDeserialize( )
method indicates whether the
data in the XML stream is of the proper type to be deserialized by
this instance of XmlSerializer
.
During deserialization, the
XmlSerializer
may fire one or more of four events.
The UnreferencedObject
event is fired if an object
deserialized from a SOAP stream has no other object referencing it.
If an unknown node is encountered in the XML stream, the
UnknownNode
event is fired, followed by the
UnknownAttribute
event if the node is a
System.Xml.XmlAttribute
, or the
UnknownElement
event if the node is a
System.Xml.XmlElement
.
An XmlSerializer
instance is created specifically
to provide XML serialization for one particular type of object. At
the time the XmlSerializer
is instantiated, the
.NET Framework generates a private assembly to perform the
serialization. Because of this, the first time you create a
serializer for a particular type, there may be some performance
degradation.
3.14.131.47