XObjectChange Wyliczenie

Definicja

Określa typ zdarzenia, gdy zdarzenie jest zgłaszane dla XObject.Specifies the event type when an event is raised for an XObject.

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

Pola

Add 0

XObject został lub zostanie dodany do XContainer.An XObject has been or will be added to an XContainer.

Name 2

XObject został lub zostanie zmieniona nazwa.An XObject has been or will be renamed.

Remove 1

XObject został lub zostanie usunięty z XContainer.An XObject has been or will be removed from an XContainer.

Value 3

Wartość XObject została lub zostanie zmieniona.The value of an XObject has been or will be changed. Ponadto zmiana serializacji pustego elementu (z pustego tagu do pary tagów Start/End lub na odwrót) wywołuje to zdarzenie.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.

Przykłady

Poniższy przykład wywołuje zdarzenie poprzez dodanie elementu do drzewa.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"));  

Ten przykład generuje następujące wyniki: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  

Poniższy przykład wywołuje zdarzenie przez usunięcie elementu z drzewa.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();  

Ten przykład generuje następujące wyniki: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  

Poniższy przykład wywołuje zdarzenie, zmieniając nazwę elementu.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";  

Ten przykład generuje następujące wyniki: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  

Poniższy przykład wywołuje zdarzenie, ustawiając wartość atrybutu.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";  

Ten przykład generuje następujące wyniki: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  

Uwagi

Ta enum określa typ zdarzenia, gdy zdarzenie jest zgłaszane dla XObject.This enum specifies the event type when an event is raised for an XObject.

Wszystkie operacje, które modyfikują drzewo XML, są podzielone na serie pierwotne.All operations that modify the XML tree break down to a series of primitives. Istnieją cztery typy elementów podstawowych.There are four types of primitives. Dwa elementy pierwotne (Dodawanie i usuwanie) działają na kolekcjach.Two of the primitives (Add and Remove) act on collections. Dwa z nich działają w wystąpieniach.Two of them (Name and Value) act on instances. Dla każdego z tych elementów podstawowych istnieje odpowiednie zdarzenie.There is a corresponding event for each of these primitives.

Należy zachować ostrożność podczas modyfikowania drzewa XML w ramach jednego z tych zdarzeń, ponieważ może to prowadzić do nieoczekiwanych wyników.You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. Na przykład jeśli otrzymasz zdarzenie Changing, a podczas przetwarzania zdarzenia usuniesz węzeł z drzewa, możesz nie otrzymać zdarzenia Changed.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. Gdy zdarzenie jest przetwarzane, prawidłowe jest zmodyfikowanie drzewa XML innego niż ten, który zawiera węzeł, który otrzymuje zdarzenie. Istnieje nawet możliwość modyfikacji tego samego drzewa pod warunkiem, że modyfikacje nie wpływają na określone węzły, w których zostało zgłoszone zdarzenie.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. Jednak w przypadku zmodyfikowania obszaru drzewa zawierającego węzeł odbierający zdarzenie zdarzenia, które otrzymujesz, i wpływ na drzewo, nie są zdefiniowane.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.

Dotyczy

Zobacz też