Partager via


XObjectChange Énumération

Définition

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

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

Champs

Add 0

Un XObject a été ou va être ajouté à un XContainer.

Name 2

Un XObject a été ou va être renommé.

Remove 1

Un XObject a été ou va être supprimé d'un XContainer.

Value 3

La valeur d'un XObject a été ou va être modifiée. De plus, une modification de la sérialisation d'un élément vide (d'une balise vide vers une paire de balises démarrer/arrêter ou inversement) 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 (Ajouter et Supprimer) agissent sur les collections. Deux d’entre eux (Nom et Valeur) agissent sur les 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 pendant le traitement de l’événement, vous supprimez le nœud de l’arborescence, il se peut que vous ne receviez pas l’événement Changed . Lorsqu’un événement est en cours de traitement, 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 recevant l’événement, les événements que vous recevez et l’impact sur l’arborescence ne sont pas définis.

S’applique à

Voir aussi