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 XmlElementAttribute

 

Publicado: noviembre de 2016

Indica que un campo público o propiedad representa un elemento XML cuando la XmlSerializer serializa o deserializa el objeto que lo contiene.

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

System.Object
  System.Attribute
    System.Xml.Serialization.XmlElementAttribute

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

NombreDescripción
System_CAPS_pubmethodXmlElementAttribute()

Inicializa una nueva instancia de la clase XmlElementAttribute.

System_CAPS_pubmethodXmlElementAttribute(String)

Inicializa una nueva instancia de la XmlElementAttribute clase y especifica el nombre del elemento XML.

System_CAPS_pubmethodXmlElementAttribute(String, Type)

Inicializa una nueva instancia de la XmlElementAttribute y especifica el nombre del elemento XML y un tipo derivado del miembro al que el XmlElementAttribute se aplica. Este tipo de miembro se utiliza cuando el XmlSerializer serializa el objeto que lo contiene.

System_CAPS_pubmethodXmlElementAttribute(Type)

Inicializa una nueva instancia de la XmlElementAttribute clase y especifica un tipo para el miembro al que el XmlElementAttribute se aplica. Este tipo es utilizado por el XmlSerializer al serializar o deserializar el objeto que lo contiene.

NombreDescripción
System_CAPS_pubpropertyDataType

Obtiene o establece el tipo de datos de esquema XML (XSD) de la definición del elemento XML generado por la XmlSerializer.

System_CAPS_pubpropertyElementName

Obtiene o establece el nombre del elemento XML generado.

System_CAPS_pubpropertyForm

Obtiene o establece un valor que indica si el elemento está calificado.

System_CAPS_pubpropertyIsNullable

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

System_CAPS_pubpropertyNamespace

Obtiene o establece el espacio de nombres asignado al elemento XML que se produce cuando se serializa la clase.

System_CAPS_pubpropertyOrder

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

System_CAPS_pubpropertyType

Obtiene o establece el tipo de objeto que se utiliza para representar el elemento XML.

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 XmlElementAttribute 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.

Normalmente, un documento XML contiene elementos XML, cada uno de los cuales consta de tres partes: una etiqueta de apertura con los atributos posibles, una etiqueta de cierre y los datos entre las etiquetas. Etiquetas XML pueden estar anidadas; los datos entre las etiquetas también pueden ser elementos XML. Esta capacidad de un elemento para incluir otro permite que el documento contenga varias jerarquías de datos. Un elemento XML también puede incluir atributos.

Aplicar el XmlElementAttribute a campos públicos o propiedades públicas de lectura/escritura para controlar las características de los elementos XML como el nombre de elemento y espacio de nombres.

La XmlElementAttribute puede aplicarse varias veces a un campo que devuelve una matriz de objetos. El propósito de esto es especificar (a través de la Type propiedad) tipos diferentes que se pueden insertar en la matriz. Por ejemplo, la matriz en el siguiente código de C# acepta cadenas y enteros.

public class Things{
   [XmlElement(Type = typeof(string)),
   XmlElement(Type = typeof(int))]
   public object[] StringsAndInts;
}

El resultado XML que puede parecerse al siguiente.

<Things>
   <string>Hello</string>
   <int>999</int>
   <string>World</string>
</Things>

Tenga en cuenta que al aplicar el XmlElementAttribute varias veces sin especificar un ElementName valor de propiedad, los elementos se denominan después de los tipos de los objetos aceptables.

Si se aplica el XmlElementAttribute a un campo o propiedad que devuelve una matriz, los elementos de la matriz se codifican como una secuencia de elementos XML.

En cambio si un XmlElementAttribute no se aplica a este campo o propiedad, los elementos de la matriz se codifican como una secuencia de elementos, anidados bajo un elemento con el nombre de campo o propiedad. (Use la XmlArrayAttribute y XmlArrayItemAttribute atributos para controlar cómo se serializa una matriz.)

Puede establecer el Type propiedad para especificar un tipo que se deriva el tipo de campo o propiedad original es decir, campo o propiedad a la que se haya aplicado el XmlElementAttribute.

Si un campo o una propiedad devuelve un ArrayList, se pueden aplicar varias instancias de la XmlElementAttribute al miembro. Establecer para cada instancia del Type propiedad a un tipo de objeto que se puede insertar en la matriz.

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

System_CAPS_noteNota

Puede utilizar la palabra XmlElement en el código en lugar de más XmlElementAttribute.

El siguiente ejemplo serializa una clase denominada Group y se aplica el XmlElementAttribute a varios de sus miembros. El campo denominado Employees devuelve una matriz de Employee objetos. En este caso, el XmlElementAttribute Especifica que el XML resultante no se anidarán (que es el comportamiento predeterminado de los elementos de una matriz).

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

public class Group
{
   /* Set the element name and namespace of the XML element.
   By applying an XmlElementAttribute to an array,  you instruct
   the XmlSerializer to serialize the array as a series of XML
   elements, instead of a nested set of elements. */

   [XmlElement(
   ElementName = "Members",
   Namespace = "http://www.cpandl.com")]
   public Employee[] Employees;

   [XmlElement(DataType = "double",
   ElementName = "Building")]
   public double GroupID;

   [XmlElement(DataType = "hexBinary")]
   public byte [] HexBytes;


   [XmlElement(DataType = "boolean")]
   public bool IsActive;

   [XmlElement(Type = typeof(Manager))]
   public Employee Manager;

   [XmlElement(typeof(int),
   ElementName = "ObjectNumber"),
   XmlElement(typeof(string),
   ElementName = "ObjectString")]
   public ArrayList 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("FirstDoc.xml");
       test.DeserializeObject("FirstDoc.xml");
    }


   public void SerializeObject(string filename)
   {
      // Create the XmlSerializer.
      XmlSerializer s = new XmlSerializer(typeof(Group));

      // To write the file, a TextWriter is required.
      TextWriter writer = new StreamWriter(filename);

      /* Create an instance of the group to serialize, and set
         its properties. */
      Group group = new Group();
      group.GroupID = 10.089f;
      group.IsActive = false;

      group.HexBytes = new byte[1]{Convert.ToByte(100)};

      Employee x = new Employee();
      Employee y = new Employee();

      x.Name = "Jack";
      y.Name = "Jill";

      group.Employees = new Employee[2]{x,y};

      Manager mgr = new Manager();
      mgr.Name = "Sara";
      mgr.Level = 4;
      group.Manager = mgr;

      /* Add a number and a string to the 
      ArrayList returned by the ExtraInfo property. */
      group.ExtraInfo = new ArrayList();
      group.ExtraInfo.Add(42);
      group.ExtraInfo.Add("Answer");

      // Serialize the object, and close the TextWriter.      
      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(g.Manager.Name);
      Console.WriteLine(g.GroupID);
      Console.WriteLine(g.HexBytes[0]);
      foreach(Employee e in g.Employees)
      {
         Console.WriteLine(e.Name);
      }
   }
}

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: