XmlAttributes.XmlArray Propiedad

Definición

Obtiene o establece un objeto que especifica el modo en que XmlSerializer serializa un campo público o una propiedad pública de lectura/escritura que devuelve una matriz.

public System.Xml.Serialization.XmlArrayAttribute XmlArray { get; set; }
public System.Xml.Serialization.XmlArrayAttribute? XmlArray { get; set; }

Valor de propiedad

XmlArrayAttribute

XmlArrayAttribute que especifica el modo en que XmlSerializer serializa un campo público o una propiedad pública de lectura/escritura que devuelve una matriz.

Ejemplos

En el ejemplo siguiente se serializa una clase que contiene un campo denominado Members que devuelve una matriz de objetos . XmlArrayAttribute se usa para invalidar la serialización del campo y cambiar el nombre del elemento a Staff.

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

// This is the class that will be serialized.
public class Group
{
   // This field will be overridden.
   public Member [] Members;
}

public class Member
{
   public string MemberName;
}

public class Run
{
   public static void Main()
   {
      Run test = new Run();
      test.SerializeObject("OverrideArray.xml");
      test.DeserializeObject("OverrideArray.xml");
   }
   // Return an XmlSerializer used for overriding.
   public XmlSerializer CreateOverrider()
   {
      // Creating XmlAttributeOverrides and XmlAttributes objects.
      XmlAttributeOverrides xOver = new XmlAttributeOverrides();
      XmlAttributes xAttrs = new XmlAttributes();

      // Add an override for the XmlArray.
      XmlArrayAttribute xArray = new XmlArrayAttribute("Staff");
      xArray.Namespace = "http://www.cpandl.com";
      xAttrs.XmlArray = xArray;
      xOver.Add(typeof(Group), "Members", xAttrs);

      // Create the XmlSerializer and return it.
      return new XmlSerializer(typeof(Group), xOver);
   }

   public void SerializeObject(string filename)
   {
      // Create an instance of the XmlSerializer class.
      XmlSerializer mySerializer =  CreateOverrider();
      // Writing the file requires a TextWriter.
      TextWriter writer = new StreamWriter(filename);

      // Create an instance of the class that will be serialized.
      Group myGroup = new Group();

      // Set the object properties.
      Member m = new Member();
      m.MemberName = "Paul";
      myGroup.Members = new Member[1] {m};

      // Serialize the class, and close the TextWriter.
      mySerializer.Serialize(writer, myGroup);
      writer.Close();
   }

   public void DeserializeObject(string filename)
   {
      XmlSerializer mySerializer = CreateOverrider();
      FileStream fs = new FileStream(filename, FileMode.Open);
      Group myGroup = (Group)
      mySerializer.Deserialize(fs);
      foreach(Member m in myGroup.Members)
      {
         Console.WriteLine(m.MemberName);
      }
   }
}

Comentarios

Hay dos maneras en que un campo público o una propiedad pública de lectura y escritura que devuelve una matriz se serializa mediante : XmlSerializerla serialización predeterminada y la serialización controlada.

En la serialización predeterminada, no se aplica ningún atributo al miembro. Cuando se serializa, la matriz se serializa como una secuencia anidada de elementos XML con el nombre del elemento XML de la secuencia anidada tomada del nombre del miembro.

Para controlar la serialización de forma más precisa, aplique un XmlArrayAttribute objeto al campo o a la propiedad . Por ejemplo, puede cambiar el nombre del elemento XML generado del valor predeterminado a otro estableciendo la ElementName propiedad en un nuevo valor.

La XmlArray propiedad permite invalidar la serialización predeterminada, así como la serialización controlada mediante la aplicación de al XmlArrayAttribute miembro . Por ejemplo, puede cambiar el nombre del elemento XML generado desde el valor predeterminado (el identificador de miembro) a un nuevo valor. Además, si aplica un XmlArrayAttribute elemento a un miembro, lo invalida cualquier XmlArrayAttribute que se asigne a la XmlArray propiedad .

Se aplica a

Producto Versiones
.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
.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
.NET Standard 2.0, 2.1
UWP 10.0