XObjectChange Enumeration

Definition

Gibt den Ereignistyp an, wenn ein Ereignis für ein XObject ausgelöst wird.

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.

Name 2

Ein XObject wurde oder wird umbenannt.

Remove 1

Ein XObject wurde oder wird aus einem XContainer entfernt.

Value 3

Der Wert eines XObject wurde oder wird geändert. 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.

Beispiele

Im folgenden Beispiel wird ein Ereignis ausgelöst, indem ein Element zur Struktur hinzugefügt wird.

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:

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.

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:

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.

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:

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.

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:

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

Hinweise

Dadurch enum wird der Ereignistyp angegeben, wenn ein Ereignis für ein XObjectEreignis ausgelöst wird.

Alle Vorgänge, die die XML-Struktur ändern, werden in eine Reihe von Grundtypen aufgebrochen. Es gibt vier Typen von Grundtypen. Zwei der Grundtypen (Hinzufügen und Entfernen) wirken auf Auflistungen. Zwei davon (Name und Wert) handeln auf Instanzen. Für jeden dieser Grundtypen gibt es ein entsprechendes Ereignis.

Sie sollten vorsichtig sein, wenn Sie eine XML-Struktur innerhalb eines dieser Ereignisse ändern, da dies zu unerwarteten Ergebnissen führen kann. Wenn Sie z. B. ein Changing Ereignis erhalten und das Ereignis verarbeitet wird, entfernen Sie den Knoten möglicherweise nicht Changed aus der Struktur. Wenn ein Ereignis verarbeitet wird, ist es gültig, eine andere XML-Struktur zu ändern als die, die den Knoten enthält, der das Ereignis empfängt; Es ist sogar gültig, die gleiche Struktur zu ändern, sofern sich die Änderungen nicht auf die spezifischen Knoten auswirken, auf denen das Ereignis ausgelöst wurde. Wenn Sie jedoch den Bereich der Struktur ändern, der den Knoten enthält, der das Ereignis empfängt, werden die empfangenen Ereignisse und die Auswirkungen auf die Struktur nicht definiert.

Gilt für

Siehe auch