XmlAnyElementAttribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Especifica que o membro (um campo que devolve um array de XmlElement ou XmlNode objetos) contém objetos que representam qualquer elemento XML que não tenha um membro correspondente no objeto a ser 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
- Atributos
Exemplos
O exemplo seguinte aplica-se a XmlAnyElementAttribute um campo nomeado AllElements que devolve um array 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
Observações
Sugestão
Ao trabalhar numa biblioteca portátil de classes, como no Silverlight, Windows Phone ou Windows Store App Project, e estiver a usar o .NET Framework 4.0.3 e superiores, use XElement ou XNode em vez 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.
Aplicar o XmlAnyElementAttribute a um campo que devolve um array de XmlElement ou XmlNode objetos. Tal campo pode ser usado de duas formas, dependendo se um objeto está a ser serializado ou desserializado. Quando serializado, o objeto é gerado como elementos ou nós XML, mesmo que não tenham nenhum membro correspondente (ou membros) no objeto a ser serializado. Se especificar um Name valor de propriedade ao aplicar o atributo, todos XmlElement os XmlNode objetos inseridos no array devem ter o mesmo nome de elemento e namespace por defeito, caso contrário é lançada uma exceção. Se definires o valor da Namespace propriedade, também tens de definir a Name propriedade, e os XmlElement objetos ou XmlNode também devem ter os mesmos valores de nome e espaço de nomes. Se não for especificado um Name valor, os XmlElement objetos ou XmlNode podem ter qualquer nome de elemento.
Quando se chama o Deserialize método da XmlSerializer classe, todos os elementos que não têm um membro correspondente no objeto a desserializar são recolhidos no array. Após a desserialização, itere pela recolha de XmlElement itens para processar os dados. Se especificar um Name valor, o array contém apenas elementos XML com esse nome. Se não especificar um Name valor, o array contém todos os elementos que não têm um membro correspondente na classe. Se uma classe contiver mais do que um campo ao qual o atributo é aplicado, use as Namepropriedades , ou Name e Namespace para diferenciar o conteúdo dos arrays. Se tal classe (com múltiplos campos) também contiver um campo que não tenha valores de propriedades diferenciadoras definidos (ou seja, Name e Namespace) durante a desserialização, este array contém quaisquer elementos XML desconhecidos que não estejam já contidos nos outros arrays. Se uma classe contiver mais do que um campo que não tenha um conjunto de valores diferenciador Name, ou Name um Namespace conjunto, o comportamento durante a desserialização não é especificado.
Também podes aplicar o XmlAnyElementAttribute a um campo que devolve um único XmlElement objeto. Se o fizer, deve usar as propriedades e métodos da XmlElement classe para iterar recursivamente pelos elementos desconhecidos.
Pode aplicar múltiplas instâncias do XmlAnyElementAttribute a um membro da 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, deve ser definido um valor distinto Namespace para cada instância.
Os UnknownNode eventos UnknownAttribute e não XmlSerializer ocorrem se aplicares a XmlAnyElementAttribute um membro de uma classe.
Note
Podes usar a palavra XmlAnyElement no teu código em vez do mais longo XmlAnyElementAttribute.
Para mais informações sobre o uso de atributos, consulte Atributos.
Construtores
| Name | Description |
|---|---|
| XmlAnyElementAttribute() |
Inicializa uma nova instância da XmlAnyElementAttribute classe. |
| XmlAnyElementAttribute(String, String) |
Inicializa uma nova instância da XmlAnyElementAttribute classe e especifica o nome do elemento XML gerado no documento XML e no seu espaço de nomes XML. |
| XmlAnyElementAttribute(String) |
Inicializa uma nova instância da XmlAnyElementAttribute classe e especifica o nome do elemento XML gerado no documento XML. |
Propriedades
| Name | Description |
|---|---|
| Name |
Obtém ou define o nome do elemento XML. |
| Namespace |
Obtém ou define o espaço de nomes XML gerado no documento XML. |
| Order |
Obtém ou define a ordem explícita em que os elementos são serializados ou desserializados. |
| TypeId |
Quando implementado numa classe derivada, obtém um identificador único para esta Attribute. (Herdado de Attribute) |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| GetHashCode() |
Devolve o código de hash para esta instância. (Herdado de Attribute) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsDefaultAttribute() |
Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
| Match(Object) |
Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface. (Herdado de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute) |