Partilhar via


XmlAnyElementAttribute Classe

Definição

Especifica que o membro (um campo que retorna uma matriz de objetos XmlElement ou XmlNode) contém objetos que representam qualquer elemento XML que não tem nenhum membro correspondente no objeto que está sendo serializado ou desserializado.

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
Herança
XmlAnyElementAttribute
Atributos

Exemplos

O exemplo a seguir aplica o XmlAnyElementAttribute a um campo chamado AllElements que retorna uma 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

Comentários

Dica

Ao trabalhar em uma biblioteca de classes portátil, como no Silverlight, Windows Phone ou no projeto aplicativo da Windows Store, e você está usando o .NET Framework 4.0.3 e superior, use XElement ou XNode no lugar de XmlElement e XmlNode.

Use o XmlAnyElementAttribute para conter dados arbitrários (como elementos XML) que podem ser enviados como parte de um documento XML, como metadados enviados como parte do documento.

Aplique o XmlAnyElementAttribute a um campo que retorna uma matriz de XmlElement objetos ou XmlNode . Esse campo pode ser usado de duas maneiras, dependendo se um objeto está sendo serializado ou desserializado. Quando serializado, o objeto é gerado como elementos XML ou nós, mesmo que não tenham membros (ou membros) correspondentes no objeto que está sendo serializado. Se você especificar um Name valor de propriedade ao aplicar o atributo, todos os XmlElement objetos ou XmlNode inseridos na matriz deverão ter o mesmo nome de elemento e namespace padrão ou uma exceção será gerada. Se você definir o valor da Namespace propriedade, também deverá definir a Name propriedade e os XmlElement objetos ou XmlNode também deverão ter os mesmos valores de namespace e nome. Se nenhum Name valor for especificado, os XmlElement objetos ou XmlNode poderão ter qualquer nome de elemento.

Quando você chama o Deserialize método da XmlSerializer classe , todos os elementos que não têm um membro correspondente no objeto que está sendo desserializado são coletados na matriz. Após a desserialização, itere por meio da coleção de XmlElement itens para processar os dados. Se você especificar um Name valor, a matriz conterá apenas elementos XML com esse nome. Se você não especificar um Name valor, a matriz conterá todos os elementos que não têm nenhum membro correspondente na classe . Se uma classe contiver mais de um campo ao qual o atributo é aplicado, use as Namepropriedades , ou Name e Namespace para diferenciar entre o conteúdo das matrizes. Se essa classe (com vários campos) também contiver um campo que não tenha valores de propriedade diferenciais definidos (em outras palavras, Name e Namespace) durante a desserialização, essa matriz conterá quaisquer elementos XML desconhecidos que ainda não estejam contidos nas outras matrizes. Se uma classe contiver mais de um campo que não tenha um diferencial NameName e um Namespace conjunto de valores, o comportamento durante a desserialização não será especificado.

Você também pode aplicar o XmlAnyElementAttribute a um campo que retorna um único XmlElement objeto. Se você fizer isso, deverá usar as propriedades e os métodos da XmlElement classe para iterar recursivamente por meio dos elementos desconhecidos.

Você pode aplicar várias instâncias do a XmlAnyElementAttribute um membro de classe, mas cada instância deve ter um valor de propriedade distinto Name . Ou, se a mesma Name propriedade for definida para cada instância, um valor de propriedade distinto Namespace deverá ser definido para cada instância.

Os UnknownNode eventos e UnknownAttribute do XmlSerializer não ocorrerão se você aplicar o XmlAnyElementAttribute a um membro de uma classe.

Observação

Você pode usar a palavra XmlAnyElement em seu código em vez do mais longo XmlAnyElementAttribute.

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

Construtores

XmlAnyElementAttribute()

Inicializa uma nova instância da classe XmlAnyElementAttribute.

XmlAnyElementAttribute(String)

Inicializa uma nova instância da classe XmlAnyElementAttribute e especifica o nome do elemento XML gerado no documento XML.

XmlAnyElementAttribute(String, String)

Inicializa uma nova instância da classe XmlAnyElementAttribute e especifica o nome do elemento XML gerado no documento XML e seu namespace de XML.

Propriedades

Name

Obtém ou define o nome do elemento XML.

Namespace

Obtém ou define o namespace de XML gerado no documento 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

Confira também