Partager via


XmlAnyElementAttribute Classe

Définition

Spécifie que le membre (champ qui retourne un tableau d’objets XmlElement ou XmlNode) contient des objets qui représentent tout élément XML qui n’a aucun membre correspondant dans l’objet sérialisé ou désérialisé.

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
Héritage
XmlAnyElementAttribute
Attributs

Exemples

L’exemple suivant applique le XmlAnyElementAttribute champ nommé AllElements qui retourne un tableau d’objets XmlElement .

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

Remarques

Conseil / Astuce

Lorsque vous travaillez dans une bibliothèque de classes portable, comme dans Silverlight, Windows Phone ou le projet d’application du Windows Store, et que vous utilisez le .NET Framework 4.0.3 et versions ultérieures, utilisez XElement ou XNode place et XmlElementXmlNode.

Utilisez la XmlAnyElementAttribute méthode pour contenir des données arbitraires (en tant qu’éléments XML) qui peuvent être envoyées dans le cadre d’un document XML, telles que les métadonnées envoyées dans le cadre du document.

Appliquez le XmlAnyElementAttribute champ à un champ qui retourne un tableau d’objets XmlElement ou XmlNode un tableau. Un tel champ peut être utilisé de deux façons, selon qu’un objet est sérialisé ou désérialisé. En cas de sérialisation, l’objet est généré en tant qu’éléments OU nœuds XML, même s’il n’a aucun membre (ou membre) correspondant dans l’objet en cours de sérialisation. Si vous spécifiez une Name valeur de propriété lors de l’application de l’attribut, tous ou XmlNode objets XmlElement insérés dans le tableau doivent avoir le même nom d’élément et l’espace de noms par défaut, ou une exception est levée. Si vous définissez la valeur de la Namespace propriété, vous devez également définir la Name propriété et les XmlNodeXmlElement objets doivent également avoir le même nom et les mêmes valeurs d’espace de noms. Si aucune valeur n’est Name spécifiée, le ou XmlNode les XmlElement objets peuvent avoir n’importe quel nom d’élément.

Lorsque vous appelez la Deserialize méthode de la XmlSerializer classe, tous les éléments qui n’ont pas de membre correspondant dans l’objet désérialisé sont collectés dans le tableau. Après la désérialisation, effectuez une itération dans la collection d’éléments XmlElement pour traiter les données. Si vous spécifiez une Name valeur, le tableau contient uniquement des éléments XML portant ce nom. Si vous ne spécifiez pas de Name valeur, le tableau contient tous les éléments qui n’ont aucun membre correspondant dans la classe. Si une classe contient plusieurs champs auxquels l’attribut est appliqué, utilisez le Nameou Name les Namespace propriétés pour différencier le contenu des tableaux. Si une telle classe (avec plusieurs champs) contient également un champ qui n’a pas de valeurs de propriété différentes définies (en d’autres termes Name et Namespace) pendant la désérialisation, ce tableau contient tous les éléments XML inconnus qui ne sont pas déjà contenus dans les autres tableaux. Si une classe contient plusieurs champs qui n’ont pas de différentiation Name, ou NameNamespace si la valeur est définie, le comportement pendant la désérialisation n’est pas spécifié.

Vous pouvez également appliquer le XmlAnyElementAttribute champ à un champ qui retourne un seul XmlElement objet. Si vous le faites, vous devez utiliser les propriétés et méthodes de la XmlElement classe pour effectuer une itération récursive à travers les éléments inconnus.

Vous pouvez appliquer plusieurs instances d’un membre de XmlAnyElementAttribute classe, mais chaque instance doit avoir une valeur de propriété distincte Name . Ou, si la même Name propriété est définie pour chaque instance, une valeur de propriété distincte Namespace doit être définie pour chaque instance.

Les UnknownNode événements et UnknownAttribute les événements ne XmlSerializer se produisent pas si vous appliquez le XmlAnyElementAttribute membre d’une classe.

Note

Vous pouvez utiliser le mot XmlAnyElement dans votre code au lieu du plus long XmlAnyElementAttribute.

Pour plus d’informations sur l’utilisation d’attributs, consultez Attributs.

Constructeurs

Nom Description
XmlAnyElementAttribute()

Initialise une nouvelle instance de la classe XmlAnyElementAttribute.

XmlAnyElementAttribute(String, String)

Initialise une nouvelle instance de la classe et spécifie le nom de l’élément XmlAnyElementAttribute XML généré dans le document XML et son espace de noms XML.

XmlAnyElementAttribute(String)

Initialise une nouvelle instance de la XmlAnyElementAttribute classe et spécifie le nom de l’élément XML généré dans le document XML.

Propriétés

Nom Description
Name

Obtient ou définit le nom de l’élément XML.

Namespace

Obtient ou définit l’espace de noms XML généré dans le document XML.

Order

Obtient ou définit l’ordre explicite dans lequel les éléments sont sérialisés ou désérialisés.

TypeId

En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute.

(Hérité de Attribute)

Méthodes

Nom Description
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage pour cette instance.

(Hérité de Attribute)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

Nom Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l’accès aux propriétés et méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi