XmlArrayAttribute Classe

Definição

Especifica que o XmlSerializer deve serializar um membro de classe específica como uma matriz de elementos XML.

C#
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)]
public class XmlArrayAttribute : Attribute
Herança
XmlArrayAttribute
Atributos

Exemplos

O exemplo a seguir serializa uma instância de classe em um documento XML que contém várias matrizes de objetos. O XmlArrayAttribute é aplicado aos membros que se tornam matrizes de elemento XML.

C#
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;
}

Comentários

O XmlArrayAttribute pertence a uma família de atributos que controla como o XmlSerializer serializa ou desserializa um objeto. Para obter uma lista completa de atributos semelhantes, consulte Atributos que controlam a serialização XML.

Você pode aplicar o a XmlArrayAttribute um campo público ou propriedade de leitura/gravação que retorna uma matriz de objetos. Você também pode aplicá-lo a coleções e campos que retornam um ArrayList ou qualquer campo que retorna um objeto que implementa a IEnumerable interface.

Quando você aplica o XmlArrayAttribute a um membro de classe, o Serialize método da XmlSerializer classe gera uma sequência aninhada de elementos XML desse membro. Um documento de esquema XML (um arquivo .xsd) indica uma matriz como um complexType. Por exemplo, se a classe a ser serializada representar uma ordem de compra, você poderá gerar uma matriz de itens comprados aplicando o XmlArrayAttribute a um campo público que retorna uma matriz de objetos que representam itens de pedido.

Se nenhum atributo for aplicado a um campo ou propriedade pública que retorne uma matriz de objetos de tipo complexo ou primitivo, o XmlSerializer gerará uma sequência aninhada de elementos XML por padrão. Para controlar com mais precisão quais elementos XML são gerados, aplique um XmlArrayItemAttribute e um XmlArrayAttribute ao campo ou à propriedade. Por exemplo, por padrão, o nome do elemento XML gerado é derivado do identificador de membro Você pode alterar o nome do elemento XML gerado definindo a ElementName propriedade .

Se você serializar uma matriz que contém itens de um tipo específico e todas as classes derivadas desse tipo, deverá usar o XmlArrayItemAttribute para declarar cada um dos tipos.

Observação

Você pode usar XmlArray em seu código em vez do mais longo XmlArrayAttribute.

Para obter mais informações sobre como usar atributos, consulte Atributos.

Construtores

XmlArrayAttribute()

Inicializa uma nova instância da classe XmlArrayAttribute.

XmlArrayAttribute(String)

Inicializa uma nova instância da classe XmlArrayAttribute e especifica o nome do elemento XML gerado na instância de documento XML.

Propriedades

ElementName

Obtém ou define o nome do elemento XML fornecido à matriz serializada.

Form

Obtém ou define um valor que indica se o nome do elemento XML gerado pelo XmlSerializer é qualificado ou não.

IsNullable

Obtém ou define um valor que indica se o XmlSerializer deve serializar um membro como uma marca de XML vazia com o atributo xsi:nil definido como true.

Namespace

Obtém ou define o namespace do elemento XML.

Order

Obtém ou define a ordem explícita na qual os elementos são serializados ou desserializados.

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.

(Herdado de Attribute)

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Confira também