XmlAttributes Class
Represents a collection of attribute objects that control how the XmlSerializer serializes and deserializes an object.
Assembly: System.Xml (in System.Xml.dll)
| Name | Description | |
|---|---|---|
![]() | XmlAttributes() | Initializes a new instance of the XmlAttributes class. |
![]() | XmlAttributes(ICustomAttributeProvider) | This API supports the product infrastructure and is not intended to be used directly from your code. Initializes a new instance of the XmlAttributes class and customizes how the XmlSerializer serializes and deserializes an object. |
| Name | Description | |
|---|---|---|
![]() | XmlAnyAttribute | Gets or sets the XmlAnyAttributeAttribute to override. |
![]() | XmlAnyElements | Gets the collection of XmlAnyElementAttribute objects to override. |
![]() | XmlArray | Gets or sets an object that specifies how the XmlSerializer serializes a public field or read/write property that returns an array. |
![]() | XmlArrayItems | Gets or sets a collection of objects that specify how the XmlSerializer serializes items inserted into an array returned by a public field or read/write property. |
![]() | XmlAttribute | Gets or sets an object that specifies how the XmlSerializer serializes a public field or public read/write property as an XML attribute. |
![]() | XmlChoiceIdentifier | Gets or sets an object that allows you to distinguish between a set of choices. |
![]() | XmlDefaultValue | Gets or sets the default value of an XML element or attribute. |
![]() | XmlElements | Gets a collection of objects that specify how the XmlSerializer serializes a public field or read/write property as an XML element. |
![]() | XmlEnum | Gets or sets an object that specifies how the XmlSerializer serializes an enumeration member. |
![]() | XmlIgnore | Gets or sets a value that specifies whether or not the XmlSerializer serializes a public field or public read/write property. |
![]() | Xmlns | Gets or sets a value that specifies whether to keep all namespace declarations when an object containing a member that returns an XmlSerializerNamespaces object is overridden. |
![]() | XmlRoot | Gets or sets an object that specifies how the XmlSerializer serializes a class as an XML root element. |
![]() | XmlText | Gets or sets an object that instructs the XmlSerializer to serialize a public field or public read/write property as XML text. |
![]() | XmlType | Gets or sets an object that specifies how the XmlSerializer serializes a class to which the XmlTypeAttribute has been applied. |
| Name | Description | |
|---|---|---|
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
Creating the XmlAttributes is part of a process that overrides the default way the XmlSerializer serializes class instances. For example, suppose you want to serialize an object that is created from a DLL which has an inaccessible source. By using the XmlAttributeOverrides, you can augment or otherwise control how the object is serialized.
The members of the XmlAttributes class correspond directly to a family of attribute classes that control serialization. For example, the XmlText property must be set to an XmlTextAttribute, which allows you to override serialization of a field or property by instructing the XmlSerializer to serialize the property value as XML text. For a complete list of attributes that control serialization, see the XmlSerializer.
For more details on using the XmlAttributeOverrides with the XmlAttributes class, see How to: Specify an Alternate Element Name for an XML Stream.
The following example serializes an instance of a class named Orchestra, which contains a single field named Instruments that returns an array of Instrument objects. A second class named Brass inherits from the Instrument class. The example creates an XmlAttributes object to override the Instrument field--allowing the field to accept Brass objects--and adds the XmlAttributes object to an instance of the XmlAttributeOverrides class.
using System; using System.IO; using System.Xml.Serialization; public class Orchestra { public Instrument[] Instruments; } public class Instrument { public string Name; } public class Brass:Instrument { public bool IsValved; } public class Run { public static void Main() { Run test = new Run(); test.SerializeObject("Override.xml"); test.DeserializeObject("Override.xml"); } public void SerializeObject(string filename) { /* Each overridden field, property, or type requires an XmlAttributes object. */ XmlAttributes attrs = new XmlAttributes(); /* Create an XmlElementAttribute to override the field that returns Instrument objects. The overridden field returns Brass objects instead. */ XmlElementAttribute attr = new XmlElementAttribute(); attr.ElementName = "Brass"; attr.Type = typeof(Brass); // Add the element to the collection of elements. attrs.XmlElements.Add(attr); // Create the XmlAttributeOverrides object. XmlAttributeOverrides attrOverrides = new XmlAttributeOverrides(); /* Add the type of the class that contains the overridden member and the XmlAttributes to override it with to the XmlAttributeOverrides object. */ attrOverrides.Add(typeof(Orchestra), "Instruments", attrs); // Create the XmlSerializer using the XmlAttributeOverrides. XmlSerializer s = new XmlSerializer(typeof(Orchestra), attrOverrides); // Writing the file requires a TextWriter. TextWriter writer = new StreamWriter(filename); // Create the object that will be serialized. Orchestra band = new Orchestra(); // Create an object of the derived type. Brass i = new Brass(); i.Name = "Trumpet"; i.IsValved = true; Instrument[] myInstruments = {i}; band.Instruments = myInstruments; // Serialize the object. s.Serialize(writer,band); writer.Close(); } public void DeserializeObject(string filename) { XmlAttributeOverrides attrOverrides = new XmlAttributeOverrides(); XmlAttributes attrs = new XmlAttributes(); // Create an XmlElementAttribute to override the Instrument. XmlElementAttribute attr = new XmlElementAttribute(); attr.ElementName = "Brass"; attr.Type = typeof(Brass); // Add the element to the collection of elements. attrs.XmlElements.Add(attr); attrOverrides.Add(typeof(Orchestra), "Instruments", attrs); // Create the XmlSerializer using the XmlAttributeOverrides. XmlSerializer s = new XmlSerializer(typeof(Orchestra), attrOverrides); FileStream fs = new FileStream(filename, FileMode.Open); Orchestra band = (Orchestra) s.Deserialize(fs); Console.WriteLine("Brass:"); /* The difference between deserializing the overridden XML document and serializing it is this: To read the derived object values, you must declare an object of the derived type (Brass), and cast the Instrument instance to it. */ Brass b; foreach(Instrument i in band.Instruments) { b = (Brass)i; Console.WriteLine( b.Name + "\n" + b.IsValved); } } }
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


