XObjectChange Énumération

Définition

Spécifie le type d’événement lorsqu’un événement est déclenché pour un XObject.

public enum class XObjectChange
public enum XObjectChange
type XObjectChange = 
Public Enum XObjectChange
Héritage
XObjectChange

Champs

Nom Valeur Description
Add 0

Un XObject a été ou sera ajouté à un XContainer.

Remove 1

Un XObject a été ou sera supprimé d’un XContainer.

Name 2

Un XObject nom a été ou sera renommé.

Value 3

La valeur d’un XObject élément a été ou sera modifiée. En outre, une modification de la sérialisation d’un élément vide (d’une balise vide à la paire d’étiquettes de début/fin ou vice versa) déclenche cet événement.

Exemples

L’exemple suivant déclenche un événement en ajoutant un élément à l’arborescence.

XElement root = new XElement("Root", "content");  
root.Changing += (sender, e) =>  
    {  
        Console.WriteLine("Changing event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changing: " + e.ObjectChange);  
    };  
root.Changed += (sender, e) =>  
    {  
        Console.WriteLine("Changed event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changed: " + e.ObjectChange);  
    };  
root.Add(new XElement("Child", "child content"));  

Cet exemple produit la sortie suivante :

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Add  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Add  

L’exemple suivant déclenche un événement en supprimant un élément de l’arborescence.

XElement root = new XElement("Root",  
    new XElement("Child", "content")  
);  
root.Changing += (sender, e) =>  
    {  
        Console.WriteLine("Changing event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changing: " + e.ObjectChange);  
    };  
root.Changed += (sender, e) =>  
    {  
        Console.WriteLine("Changed event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changed: " + e.ObjectChange);  
    };  
root.Element("Child").Remove();  

Cet exemple produit la sortie suivante :

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Remove  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Remove  

L’exemple suivant déclenche un événement en modifiant le nom d’un élément.

XElement root = new XElement("Root", "content");  
root.Changing += (sender, e) =>  
    {  
        Console.WriteLine("Changing event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changing: " + e.ObjectChange);  
    };  
root.Changed += (sender, e) =>  
    {  
        Console.WriteLine("Changed event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changed: " + e.ObjectChange);  
    };  
root.Name = "NewName";  

Cet exemple produit la sortie suivante :

Changing event raised  
  Sender: System.Xml.Linq.XElement  
  Changing: Name  
Changed event raised  
  Sender: System.Xml.Linq.XElement  
  Changed: Name  

L’exemple suivant déclenche un événement en définissant la valeur d’un attribut.

XElement root = new XElement("Root",  
    new XAttribute("Att", "att value")  
);  
root.Changing += (sender, e) =>  
    {  
        Console.WriteLine("Changing event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changing: " + e.ObjectChange);  
    };  
root.Changed += (sender, e) =>  
    {  
        Console.WriteLine("Changed event raised");  
        Console.WriteLine("  Sender: " + sender.GetType());  
        Console.WriteLine("  Changed: " + e.ObjectChange);  
    };  
root.FirstAttribute.Value = "new contents";  

Cet exemple produit la sortie suivante :

Changing event raised  
  Sender: System.Xml.Linq.XAttribute  
  Changing: Value  
Changed event raised  
  Sender: System.Xml.Linq.XAttribute  
  Changed: Value  

Remarques

Cela enum spécifie le type d’événement lorsqu’un événement est déclenché pour un XObject.

Toutes les opérations qui modifient l’arborescence XML se décomposent en une série de primitives. Il existe quatre types de primitives. Deux des primitives (Add and Remove) agissent sur les collections. Deux d’entre eux (Nom et Valeur) agissent sur des instances. Il existe un événement correspondant pour chacune de ces primitives.

Vous devez être prudent lors de la modification d’une arborescence XML dans l’un de ces événements, car cela peut entraîner des résultats inattendus. Par exemple, si vous recevez un Changing événement et que l’événement est en cours de traitement, vous supprimez le nœud de l’arborescence, vous risquez de ne pas recevoir l’événement Changed . Lorsqu’un événement est traité, il est valide de modifier une arborescence XML autre que celle qui contient le nœud qui reçoit l’événement ; il est même valide de modifier la même arborescence, à condition que les modifications n’affectent pas les nœuds spécifiques sur lesquels l’événement a été déclenché. Toutefois, si vous modifiez la zone de l’arborescence qui contient le nœud qui reçoit l’événement, les événements que vous recevez et l’impact sur l’arborescence ne sont pas définis.

S’applique à

Voir aussi