Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase XmlArrayAttribute

 

Publicado: octubre de 2016

Especifica que el XmlSerializer debe serializar un miembro de clase determinado como matriz de elementos XML.

Espacio de nombres:   System.Xml.Serialization
Ensamblado:  System.Xml (en System.Xml.dll)

System.Object
  System.Attribute
    System.Xml.Serialization.XmlArrayAttribute

[AttributeUsageAttribute(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.ReturnValue, 
	AllowMultiple = false)]
public class XmlArrayAttribute : Attribute

NombreDescripción
System_CAPS_pubmethodXmlArrayAttribute()

Inicializa una nueva instancia de la clase XmlArrayAttribute.

System_CAPS_pubmethodXmlArrayAttribute(String)

Inicializa una nueva instancia de la XmlArrayAttribute clase y especifica el nombre del elemento XML generado en la instancia de documento XML.

NombreDescripción
System_CAPS_pubpropertyElementName

Obtiene o establece el nombre de elemento XML asignado a la matriz serializada.

System_CAPS_pubpropertyForm

Obtiene o establece un valor que indica si el nombre del elemento XML generado por el XmlSerializer está o no calificado.

System_CAPS_pubpropertyIsNullable

Obtiene o establece un valor que indica si el XmlSerializer debe serializar un miembro como una etiqueta XML vacía con el xsi:nil atributo establecido en true.

System_CAPS_pubpropertyNamespace

Obtiene o establece el espacio de nombres del elemento XML.

System_CAPS_pubpropertyOrder

Obtiene o establece el orden explícito en el que los elementos están serializando o deserializando.

System_CAPS_pubpropertyTypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.(Heredado de Attribute).

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Heredado de Attribute).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash de esta instancia.(Heredado de Attribute).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodIsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.(Heredado de Attribute).

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.(Heredado de Attribute).

El XmlArrayAttribute pertenece a una familia de atributos que controla cómo el XmlSerializer serializa o deserializa un objeto. Para obtener una lista completa de atributos similares, vea Atributos que controlan la serialización XML.

Puede aplicar el XmlArrayAttribute a una propiedad pública de lectura/escritura o de campo que devuelve una matriz de objetos. También puede aplicar a colecciones y campos que devuelvan un ArrayList o cualquier campo que devuelve un objeto que implementa el IEnumerable interfaz.

Al aplicar el XmlArrayAttribute a un miembro de clase, el Serialize método de la XmlSerializer clase genera una secuencia anidada de elementos XML de ese miembro. Un documento de esquema XML (un archivo .xsd) indica dicha matriz como un complexType. Por ejemplo, si la clase que debe serializarse representa una orden de compra, puede generar una matriz de elementos comprados aplicando el XmlArrayAttribute a un campo público que devuelve una matriz de objetos que representan elementos del pedido.

Si no hay atributos se aplican a un campo público o una propiedad que devuelve una matriz de objetos de tipo complejo o primitivo, el XmlSerializer genera una secuencia anidada de elementos XML de forma predeterminada. Para controlar con mayor precisión qué elementos XML se generan, aplique un XmlArrayItemAttribute y un XmlArrayAttribute al campo o propiedad. Por ejemplo, de forma predeterminada, el nombre del elemento XML generado se deriva el identificador de miembro puede cambiar el nombre del elemento XML generado estableciendo la ElementName propiedad.

Si se serializa una matriz que contiene los elementos de un tipo específico y todas las clases derivan de dicho tipo, debe utilizarse el XmlArrayItemAttribute para declarar cada uno de los tipos.

System_CAPS_noteNota

Puede usar XmlArray en su código en lugar de más XmlArrayAttribute.

Para obtener más información sobre el uso de atributos, vea Extender metadatos mediante atributos.

En el ejemplo siguiente se serializa una instancia de clase en un documento XML que contiene varias matrices de objetos. El XmlArrayAttribute se aplica a los miembros que se convierten en matrices de elementos XML.

using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;

public class Run
{
   public static void Main()
   {
      Run test = new Run();
      test.SerializeDocument("books.xml");
   }

   public void SerializeDocument(string filename)
   {
      // Creates a new XmlSerializer.
      XmlSerializer s = 
      new XmlSerializer(typeof(MyRootClass));

      // Writing the file requires a StreamWriter.
      TextWriter myWriter= new StreamWriter(filename);

      // Creates an instance of the class to serialize. 
      MyRootClass myRootClass = new MyRootClass();

      /* Uses a basic method of creating an XML array: Create and 
      populate a string array, and assign it to the 
      MyStringArray property. */

      string [] myString = {"Hello", "world", "!"};
      myRootClass.MyStringArray = myString;

      /* Uses a more advanced method of creating an array:
         create instances of the Item and BookItem, where BookItem 
         is derived from Item. */
      Item item1 = new Item();
      BookItem item2 = new BookItem();

      // Sets the objects' properties.
      item1.ItemName = "Widget1";
      item1.ItemCode = "w1";
      item1.ItemPrice = 231;
      item1.ItemQuantity = 3;

      item2.ItemCode = "w2";
      item2.ItemPrice = 123;
      item2.ItemQuantity = 7;
      item2.ISBN = "34982333";
      item2.Title = "Book of Widgets";
      item2.Author = "John Smith";

      // Fills the array with the items.
      Item [] myItems = {item1,item2};

      // Sets the class's Items property to the array.
      myRootClass.Items = myItems;

      /* Serializes the class, writes it to disk, and closes 
         the TextWriter. */
      s.Serialize(myWriter, myRootClass);
      myWriter.Close();
   }
}

// This is the class that will be serialized.
public class MyRootClass
{
   private Item [] items;

   /* Here is a simple way to serialize the array as XML. Using the
      XmlArrayAttribute, assign an element name and namespace. The
      IsNullable property determines whether the element will be 
      generated if the field is set to a null value. If set to true,
      the default, setting it to a null value will cause the XML
      xsi:null attribute to be generated. */
   [XmlArray(ElementName = "MyStrings",
   Namespace = "http://www.cpandl.com", IsNullable = true)]
   public string[] MyStringArray;

   /* Here is a more complex example of applying an 
      XmlArrayAttribute. The Items property can contain both Item 
      and BookItem objects. Use the XmlArrayItemAttribute to specify
      that both types can be inserted into the array. */
   [XmlArrayItem(ElementName= "Item", 
   IsNullable=true,
   Type = typeof(Item),
   Namespace = "http://www.cpandl.com"),
   XmlArrayItem(ElementName = "BookItem", 
   IsNullable = true, 
   Type = typeof(BookItem),
   Namespace = "http://www.cohowinery.com")]
   [XmlArray]
   public Item []Items
   {
      get{return items;}
      set{items = value;}
   }
}

public class Item{
   [XmlElement(ElementName = "OrderItem")]
   public string ItemName;
   public string ItemCode;
   public decimal ItemPrice;
   public int ItemQuantity;
}

public class BookItem:Item
{
   public string Title;
   public string Author;
   public string ISBN;
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: