XObjectChange Enumeration

Definition

Gibt den Ereignistyp an, wenn ein Ereignis für ein XObject ausgelöst wird.Specifies the event type when an event is raised for an XObject.

public enum class XObjectChange
public enum XObjectChange
type XObjectChange = 
Public Enum XObjectChange
Vererbung
XObjectChange

Felder

Add 0

Einem XObject wurde oder wird ein XContainer hinzugefügt.An XObject has been or will be added to an XContainer.

Name 2

Ein XObject wurde oder wird umbenannt.An XObject has been or will be renamed.

Remove 1

Ein XObject wurde oder wird aus einem XContainer entfernt.An XObject has been or will be removed from an XContainer.

Value 3

Der Wert eines XObject wurde oder wird geändert.The value of an XObject has been or will be changed. Darüber hinaus wird dieses Ereignis durch eine Änderung der Serialisierung eines leeren Elements (entweder aus einem leeren Tag in ein Starttag-Endtag-Paar oder umgekehrt) ausgelöst.In addition, a change in the serialization of an empty element (either from an empty tag to start/end tag pair or vice versa) raises this event.

Beispiele

Im folgenden Beispiel wird ein Ereignis ausgelöst, indem der Struktur ein Element hinzugefügt wird.The following example raises an event by adding an element to the tree.

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"));  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

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

Im folgenden Beispiel wird ein-Ereignis ausgelöst, indem ein-Element aus der-Struktur entfernt wird.The following example raises an event by removing an element from the tree.

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();  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

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

Im folgenden Beispiel wird ein Ereignis ausgelöst, indem der Name eines Elements geändert wird.The following example raises an event by changing the name of an element.

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";  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

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

Im folgenden Beispiel wird ein Ereignis ausgelöst, indem der Wert eines Attributs festgelegt wird.The following example raises an event by setting the value of an attribute.

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";  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

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

Hinweise

Gibt den Ereignistyp an, wenn ein Ereignis für ein XObjectausgelöst wird. enumThis enum specifies the event type when an event is raised for an XObject.

Alle Vorgänge, die die XML-Struktur ändern, unterbrechen eine Reihe von primitiven.All operations that modify the XML tree break down to a series of primitives. Es gibt vier Typen von primitiven.There are four types of primitives. Zwei der primitiven (hinzufügen und entfernen) agieren für Auflistungen.Two of the primitives (Add and Remove) act on collections. Zwei davon (Name und Wert) fungieren für-Instanzen.Two of them (Name and Value) act on instances. Es gibt ein entsprechendes Ereignis für jede dieser primitiven.There is a corresponding event for each of these primitives.

Beim Ändern einer XML-Struktur in einem dieser Ereignisse sollten Sie vorsichtig sein, da dies zu unerwarteten Ergebnissen führen kann.You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. Wenn Sie z. b. ein Changing -Ereignis empfangen und während der Verarbeitung des-Ereignisses den Knoten aus der Struktur entfernen, wird das Changed Ereignis möglicherweise nicht empfangen.For example, if you receive a Changing event, and while the event is being processed you remove the node from the tree, you might not receive the Changed event. Wenn ein Ereignis verarbeitet wird, ist es zulässig, eine andere XML-Struktur als die zu ändern, die den Knoten enthält, der das Ereignis empfängt. Es ist sogar zulässig, dieselbe Struktur zu ändern, vorausgesetzt, die Änderungen wirken sich nicht auf die spezifischen Knoten aus, auf denen das Ereignis ausgelöst wurde.When an event is being processed, it is valid to modify an XML tree other than the one that contains the node that is receiving the event; it is even valid to modify the same tree provided the modifications do not affect the specific nodes on which the event was raised. Wenn Sie jedoch den Bereich der Struktur ändern, der den Knoten enthält, der das Ereignis empfängt, sind die Ereignisse, die Sie empfangen und die Auswirkungen auf die Struktur haben, nicht definiert.However, if you modify the area of the tree that contains the node receiving the event, the events that you receive and the impact to the tree are undefined.

Gilt für:

Siehe auch