Compartilhar 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 tenha nenhum membro correspondente no objeto 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-se a XmlAnyElementAttribute um campo chamado AllElements que retorna uma matriz de XmlElement objetos.

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 projeto silverlight, windows phone ou 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 para XmlAnyElementAttribute 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 campo que retorna uma matriz ou XmlElementXmlNode objetos. 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 eles não tenham nenhum membro (ou membro) correspondente no objeto que está sendo serializado. Se você especificar um Name valor de propriedade ao aplicar o atributo, todos XmlElement ou XmlNode objetos 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 os objetos 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, iterar 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 e Namespace as Name propriedades para diferenciar 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 estão contidos nas outras matrizes. Se uma classe contiver mais de um campo que não tenha um diferencial Nameou Name um Namespace conjunto de valores, o comportamento durante a desserialização não será especificado.

Você também pode aplicar o XmlAnyElementAttribute campo 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 de um membro de XmlAnyElementAttribute 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.

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

Observação

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

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

Construtores

Nome Description
XmlAnyElementAttribute()

Inicializa uma nova instância da classe XmlAnyElementAttribute.

XmlAnyElementAttribute(String, String)

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

XmlAnyElementAttribute(String)

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

Propriedades

Nome Description
Name

Obtém ou define o nome do elemento XML.

Namespace

Obtém ou define o namespace 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 esse Attribute.

(Herdado de Attribute)

Métodos

Nome Description
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 dessa 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 Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
_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 de um objeto, que podem ser usadas para obter as informações de tipo de 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