XmlAnyElementAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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) |