Compartir a través de


XmlAnyElementAttribute Clase

Definición

Especifica que el miembro (un campo que devuelve una matriz de objetos XmlElement o XmlNode) contiene objetos que representan los elementos XLM que no tienen un miembro correspondiente en el objeto que se está serializando o deserializando.

public ref class XmlAnyElementAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlAnyElementAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)>]
type XmlAnyElementAttribute = class
    inherit Attribute
Public Class XmlAnyElementAttribute
Inherits Attribute
Herencia
XmlAnyElementAttribute
Atributos

Ejemplos

En el ejemplo siguiente se aplica a XmlAnyElementAttribute un campo denominado AllElements que devuelve una matriz de XmlElement objetos .

public ref class XClass
{
public:

   /* Apply the XmlAnyElementAttribute to a field returning an array
      of XmlElement objects. */

   [XmlAnyElement]
   array<XmlElement^>^AllElements;
};

public ref class Test
{
public:
   void DeserializeObject( String^ filename )
   {
      // Create an XmlSerializer.
      XmlSerializer^ mySerializer = gcnew XmlSerializer( XClass::typeid );

      // To read a file, a FileStream is needed.
      FileStream^ fs = gcnew FileStream( filename,FileMode::Open );

      // Deserialize the class.
      XClass^ x = dynamic_cast<XClass^>(mySerializer->Deserialize( fs ));

      // Read the element names and values.
      System::Collections::IEnumerator^ myEnum = x->AllElements->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         XmlElement^ xel = safe_cast<XmlElement^>(myEnum->Current);
         Console::WriteLine( "{0}: {1}", xel->LocalName, xel->Value );
      }
   }
};

int main()
{
   Test^ t = gcnew Test;
   t->DeserializeObject( "XFile.xml" );
}
public class XClass
{
   /* Apply the XmlAnyElementAttribute to a field returning an array
   of XmlElement objects. */
   [XmlAnyElement]
   public XmlElement[] AllElements;
}

public class Test
{
   public static void Main()
   {
      Test t = new Test();
      t.DeserializeObject("XFile.xml");
   }

   private void DeserializeObject(string filename)
   {
      // Create an XmlSerializer.
      XmlSerializer mySerializer = new XmlSerializer(typeof(XClass));

      // To read a file, a FileStream is needed.
      FileStream fs = new FileStream(filename, FileMode.Open);

      // Deserialize the class.
      XClass x = (XClass) mySerializer.Deserialize(fs);

      // Read the element names and values.
      foreach(XmlElement xel in x.AllElements)
         Console.WriteLine(xel.LocalName + ": " + xel.Value);
   }
}
Public Class XClass
    ' Apply the XmlAnyElementAttribute to a field returning an array
    ' of XmlElement objects.
    <XmlAnyElement()> Public AllElements() As XmlElement
End Class


Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        t.DeserializeObject("XFile.xml")
    End Sub
    
    
    Private Sub DeserializeObject(filename As String)
        ' Create an XmlSerializer.
        Dim mySerializer As New XmlSerializer(GetType(XClass))
        
        ' To read a file, a FileStream is needed.
        Dim fs As New FileStream(filename, FileMode.Open)
        
        ' Deserialize the class.
        Dim x As XClass = CType(mySerializer.Deserialize(fs), XClass)
        
        ' Read the element names and values.
        Dim xel As XmlElement
        For Each xel In  x.AllElements
            Console.WriteLine((xel.LocalName & ": " & xel.Value))
        Next xel
    End Sub
End Class

Comentarios

Sugerencia

Al trabajar en una biblioteca de clases portable, como en Silverlight, Windows Phone o proyecto de aplicación de la Tienda Windows, y usa .NET Framework 4.0.3 y versiones posteriores, use XElement o XNode en lugar de XmlElement y XmlNode.

XmlAnyElementAttribute Use para contener datos arbitrarios (como elementos XML) que se pueden enviar como parte de un documento XML, como metadatos enviados como parte del documento.

Aplique a XmlAnyElementAttribute un campo que devuelva una matriz de XmlElement objetos o XmlNode . Este campo se puede usar de dos maneras, dependiendo de si un objeto se está serializando o deserializando. Cuando se serializa, el objeto se genera como elementos o nodos XML, aunque no tengan ningún miembro correspondiente (o miembros) en el objeto que se serializa. Si especifica un Name valor de propiedad al aplicar el atributo , todos los XmlElement objetos o XmlNode insertados en la matriz deben tener el mismo nombre de elemento y el espacio de nombres predeterminado, o se produce una excepción. Si establece el valor de propiedad Namespace , también debe establecer la Name propiedad y los XmlElement objetos o XmlNode también deben tener los mismos valores de nombre y espacio de nombres. Si no se especifica ningún Name valor, los XmlElement objetos o XmlNode pueden tener cualquier nombre de elemento.

Cuando se llama al Deserialize método de la XmlSerializer clase , todos los elementos que no tienen un miembro correspondiente en el objeto que se deserializa se recopilan en la matriz. Después de la deserialización, recorra en iteración la colección de XmlElement elementos para procesar los datos. Si especifica un Name valor, la matriz solo contiene elementos XML con ese nombre. Si no especifica un Name valor, la matriz contiene todos los elementos que no tienen ningún miembro correspondiente en la clase . Si una clase contiene más de un campo al que se aplica el atributo, use las Namepropiedades , o Name y Namespace para diferenciar entre el contenido de las matrices. Si esta clase (con varios campos) también contiene un campo que no tiene valores de propiedad diferenciadores establecidos (es decir, Name y Namespace) durante la deserialización, esta matriz contiene los elementos XML desconocidos que aún no están incluidos en las otras matrices. Si una clase contiene más de un campo que no tiene un valor diferenciador Name, o Name y Namespace establecido, no se especifica el comportamiento durante la deserialización.

También puede aplicar a XmlAnyElementAttribute un campo que devuelva un solo XmlElement objeto. Si lo hace, debe usar las propiedades y los métodos de la XmlElement clase para recorrer en iteración recursiva los elementos desconocidos.

Puede aplicar varias instancias de a XmlAnyElementAttribute un miembro de clase, pero cada instancia debe tener un valor de propiedad distinto Name . O bien, si se establece la misma Name propiedad para cada instancia, se debe establecer un valor de propiedad distinto Namespace para cada instancia.

Los UnknownNode eventos y UnknownAttribute de XmlSerializer no se producen si se aplica a XmlAnyElementAttribute un miembro de una clase .

Nota:

Puede usar la palabra XmlAnyElement en el código en lugar del más largo XmlAnyElementAttribute.

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

Constructores

XmlAnyElementAttribute()

Inicializa una nueva instancia de la clase XmlAnyElementAttribute.

XmlAnyElementAttribute(String)

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

XmlAnyElementAttribute(String, String)

Inicializa una nueva instancia de la clase XmlAnyElementAttribute y especifica el nombre del elemento XML generado en el documento XML y su espacio de nombres XML.

Propiedades

Name

Obtiene o establece el nombre del elemento XML.

Namespace

Obtiene o establece el espacio de nombres XML generado en el documento XML.

Order

Obtiene o establece el orden explícito en el que los elementos son serializados o deserializados.

TypeId

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

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que 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()

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)
Match(Object)

Cuando se invalida 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 Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

_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)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos 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 las propiedades y los métodos expuestos por un objeto.

(Heredado de Attribute)

Se aplica a

Consulte también