Partager via


XmlAnyElementAttribute Classe

Définition

Spécifie que le membre (un champ retournant un tableau d'objets XmlElement ou XmlNode) contient des objets représentant tout élément XML n'ayant pas de membre correspondant dans l'objet en cours de sérialisation ou de désérialisation.

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 à XmlAnyElementAttribute un champ nommé AllElements qui retourne un tableau d’objets XmlElement .

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

Remarques

Conseil

Lorsque vous travaillez dans une bibliothèque de classes portable, par exemple dans Silverlight, Windows Phone ou un projet d’application du Windows Store, et que vous utilisez .NET Framework 4.0.3 et versions ultérieures, utilisez XElement ou XNode à la place de XmlElement et XmlNode.

Utilisez le XmlAnyElementAttribute 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 à XmlAnyElementAttribute un champ qui retourne un tableau d’objets XmlElement ou XmlNode . Un tel champ peut être utilisé de deux façons, selon qu’un objet est sérialisé ou désérialisé. Lorsqu’il est sérialisé, l’objet est généré en tant qu’éléments ou nœuds XML, même s’ils n’ont 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 les XmlElement objets ou XmlNode insérés dans le tableau doivent avoir le même nom d’élément et l’espace de noms par défaut, sinon 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 XmlElement objets ou XmlNode doivent également avoir les mêmes valeurs de nom et d’espace de noms. Si aucune valeur n’est Name spécifiée, les XmlElement objets ou XmlNode 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 en cours de désérialisation sont collectés dans le tableau. Après la désérialisation, effectuez une itération au sein de 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 les Namepropriétés ou Name et Namespace pour différencier le contenu des tableaux. Si une telle classe (avec plusieurs champs) contient également un champ qui n’a aucune valeur de propriété de différenciation définie (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 valeur de différenciation Name, ou Name et Namespace , le comportement pendant la désérialisation n’est pas spécifié.

Vous pouvez également appliquer à XmlAnyElementAttribute un champ qui retourne un seul XmlElement objet. Dans ce cas, vous devez utiliser les propriétés et les méthodes de la XmlElement classe pour effectuer une itération récursive au sein des éléments inconnus.

Vous pouvez appliquer plusieurs instances de à un membre de classeXmlAnyElementAttribute, mais chaque instance doit avoir une valeur de propriété distincteName. 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 de ne XmlSerializer se produisent pas si vous appliquez à XmlAnyElementAttribute un membre d’une classe.

Notes

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

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

Constructeurs

XmlAnyElementAttribute()

Initialise une nouvelle instance de la classe XmlAnyElementAttribute.

XmlAnyElementAttribute(String)

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

XmlAnyElementAttribute(String, String)

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

Propriétés

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

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)

Méthodes

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 de cette instance.

(Hérité de Attribute)
GetType()

Obtient le 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 pour la classe dérivée.

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

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

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

(Hérité de Object)

Implémentations d’interfaces explicites

_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 pour 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 aux méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi