XmlArrayItemAttribute Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un atributo que especifica los tipos derivados que el XmlSerializer puede colocar en una matriz serializada.
public ref class XmlArrayItemAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlArrayItemAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)>]
type XmlArrayItemAttribute = class
inherit Attribute
Public Class XmlArrayItemAttribute
Inherits Attribute
- Herencia
- Atributos
Ejemplos
En el ejemplo siguiente se serializa una clase denominada Group que contiene un campo denominado Employees que devuelve una matriz de Employee objetos. El ejemplo aplica al XmlArrayItemAttribute campo , lo que indica a XmlSerializer que puede insertar objetos de la clase base (Employee) y el tipo de clase derivada (Manager) en la matriz serializada.
using System;
using System.IO;
using System.Xml.Serialization;
public class Group
{
/* The XmlArrayItemAttribute allows the XmlSerializer to insert
both the base type (Employee) and derived type (Manager)
into serialized arrays. */
[XmlArrayItem(typeof(Manager)),
XmlArrayItem(typeof(Employee))]
public Employee[] Employees;
/* Use the XmlArrayItemAttribute to specify types allowed
in an array of Object items. */
[XmlArray]
[XmlArrayItem (typeof(int),
ElementName = "MyNumber"),
XmlArrayItem (typeof(string),
ElementName = "MyString"),
XmlArrayItem(typeof(Manager))]
public object [] ExtraInfo;
}
public class Employee
{
public string Name;
}
public class Manager:Employee{
public int Level;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeObject("TypeDoc.xml");
test.DeserializeObject("TypeDoc.xml");
}
public void SerializeObject(string filename)
{
// Creates a new XmlSerializer.
XmlSerializer s = new XmlSerializer(typeof(Group));
// Writing the XML file to disk requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
Group group = new Group();
Manager manager = new Manager();
Employee emp1 = new Employee();
Employee emp2 = new Employee();
manager.Name = "Consuela";
manager.Level = 3;
emp1.Name = "Seiko";
emp2.Name = "Martina";
Employee [] emps = new Employee[3]{manager, emp1, emp2};
group.Employees = emps;
// Creates an int and a string and assigns to ExtraInfo.
group.ExtraInfo = new Object[3]{43, "Extra", manager};
// Serializes the object, and closes the StreamWriter.
s.Serialize(writer, group);
writer.Close();
}
public void DeserializeObject(string filename)
{
FileStream fs = new FileStream(filename, FileMode.Open);
XmlSerializer x = new XmlSerializer(typeof(Group));
Group g = (Group) x.Deserialize(fs);
Console.WriteLine("Members:");
foreach(Employee e in g.Employees)
{
Console.WriteLine("\t" + e.Name);
}
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml.Serialization
Public Class Group
' The XmlArrayItemAttribute allows the XmlSerializer to insert
' both the base type (Employee) and derived type (Manager)
' into serialized arrays.
<XmlArrayItem(GetType(Manager)), _
XmlArrayItem(GetType(Employee))> _
Public Employees() As Employee
' Use the XmlArrayItemAttribute to specify types allowed
' in an array of Object items.
<XmlArray(), _
XmlArrayItem(GetType(Integer), ElementName := "MyNumber"), _
XmlArrayItem(GetType(String), ElementName := "MyString"), _
XmlArrayItem(GetType(Manager))> _
Public ExtraInfo() As Object
End Class
Public Class Employee
Public Name As String
End Class
Public Class Manager
Inherits Employee
Public Level As Integer
End Class
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.SerializeObject("TypeDoc.xml")
test.DeserializeObject("TypeDoc.xml")
End Sub
Public Sub SerializeObject(ByVal filename As String)
' Creates a new XmlSerializer.
Dim s As New XmlSerializer(GetType(Group))
' Writing the XML file to disk requires a TextWriter.
Dim writer As New StreamWriter(filename)
Dim group As New Group()
Dim manager As New Manager()
Dim emp1 As New Employee()
Dim emp2 As New Employee()
manager.Name = "Consuela"
manager.Level = 3
emp1.Name = "Seiko"
emp2.Name = "Martina"
Dim emps() As Employee = {manager, emp1, emp2}
group.Employees = emps
' Creates an int and a string and assigns to ExtraInfo.
group.ExtraInfo = New Object() {43, "Extra", manager}
' Serializes the object, and closes the StreamWriter.
s.Serialize(writer, group)
writer.Close()
End Sub
Public Sub DeserializeObject(ByVal filename As String)
Dim fs As New FileStream(filename, FileMode.Open)
Dim x As New XmlSerializer(GetType(Group))
Dim g As Group = CType(x.Deserialize(fs), Group)
Console.WriteLine("Members:")
Dim e As Employee
For Each e In g.Employees
Console.WriteLine(ControlChars.Tab & e.Name)
Next e
End Sub
End Class
Comentarios
XmlArrayItemAttribute pertenece a una familia de atributos que controla cómo serializa XmlSerializer o deserializa un objeto . Para obtener una lista completa de atributos similares, vea Atributos que controlan la serialización XML.
Puede aplicar a XmlArrayItemAttribute cualquier miembro de lectura y escritura público que devuelva una matriz o proporcione acceso a uno. Por ejemplo, un campo que devuelve una matriz de objetos, una colección, una ArrayListclase o cualquier clase que implemente la IEnumerable interfaz.
XmlArrayItemAttribute admite polimorfismo, es decir, permite XmlSerializer agregar objetos derivados a una matriz. Por ejemplo, supongamos que una clase denominada Mammal se deriva de una clase base denominada Animal. Supongamos además que una clase denominada MyAnimals contiene un campo que devuelve una matriz de Animal objetos. Para permitir que XmlSerializer serialice tanto el Animal tipo como Mammal , aplique al XmlArrayItemAttribute campo dos veces, cada vez que especifique uno de los dos tipos aceptables.
Note
Puede aplicar varias instancias de XmlArrayItemAttribute o XmlElementAttribute para especificar tipos de objetos que se pueden insertar en la matriz.
Note
No se admite la serialización de un campo o propiedad que devuelve una interfaz o matriz de interfaces.
Para obtener más información sobre el uso de atributos, vea Atributos.
Note
Puede usar la palabra XmlArrayItem en el código en lugar del más largo XmlArrayItemAttribute.
Constructores
| Nombre | Description |
|---|---|
| XmlArrayItemAttribute() |
Inicializa una nueva instancia de la clase XmlArrayItemAttribute. |
| XmlArrayItemAttribute(String, Type) |
Inicializa una nueva instancia de la XmlArrayItemAttribute clase y especifica el nombre del elemento XML generado en el documento XML y el Type que se puede insertar en el documento XML generado. |
| XmlArrayItemAttribute(String) |
Inicializa una nueva instancia de la XmlArrayItemAttribute clase y especifica el nombre del elemento XML generado en el documento XML. |
| XmlArrayItemAttribute(Type) |
Inicializa una nueva instancia de la XmlArrayItemAttribute clase y especifica el Type que se puede insertar en la matriz serializada. |
Propiedades
| Nombre | Description |
|---|---|
| DataType |
Obtiene o establece el tipo de datos XML del elemento XML generado. |
| ElementName |
Obtiene o establece el nombre del elemento XML generado. |
| Form |
Obtiene o establece un valor que indica si el nombre del elemento XML generado está calificado. |
| IsNullable |
Obtiene o establece un valor que indica si XmlSerializer debe serializar un miembro como una etiqueta XML vacía con el |
| Namespace |
Obtiene o establece el espacio de nombres del elemento XML generado. |
| NestingLevel |
Obtiene o establece el nivel de una jerarquía de elementos XML que XmlArrayItemAttribute afecta. |
| Type |
Obtiene o establece el tipo permitido en una matriz. |
| TypeId |
Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute. (Heredado de Attribute) |
Métodos
| Nombre | Description |
|---|---|
| Equals(Object) |
Devuelve un valor que indica si esta instancia es igual a un objeto especificado. (Heredado de Attribute) |
| GetHashCode() |
Devuelve el código hash de esta instancia. (Heredado de Attribute) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| IsDefaultAttribute() |
Cuando se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada. (Heredado de Attribute) |
| Match(Object) |
Cuando se reemplaza en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado. (Heredado de Attribute) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Heredado de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera la información de tipo de un objeto, que se puede usar para obtener la información de tipo de una interfaz. (Heredado de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1). (Heredado de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acceso a propiedades y métodos expuestos por un objeto . (Heredado de Attribute) |
Se aplica a
Consulte también
- XmlArrayAttribute
- XmlSerializer
- XmlArrayItems
- XmlAttributeOverrides
- XmlAttributes
- Introducción a la serialización XML
- Cómo: Especificar un nombre de elemento alternativo para una secuencia XML
- Control de la serialización XML mediante atributos
- Ejemplos de serialización XML
- Herramienta de definición de esquema XML (Xsd.exe)