XObjectChange Wyliczenie

Definicja

Określa typ zdarzenia, gdy zdarzenie jest zgłaszane dla elementu XObject.

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

Pola

Add 0

Element XObject został dodany do elementu lub zostanie dodany do elementu XContainer.

Name 2

Nazwa XObject elementu została zmieniona lub zostanie zmieniona.

Remove 1

Obiekt XObject został lub zostanie usunięty z obiektu XContainer.

Value 3

Wartość elementu XObject została lub zostanie zmieniona. Ponadto zmiana serializacji pustego elementu (z pustego tagu na parę tagów początkowych/końcowych lub odwrotnie) zgłasza to zdarzenie.

Przykłady

Poniższy przykład zgłasza zdarzenie przez dodanie elementu do drzewa.

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:

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

Poniższy przykład zgłasza zdarzenie przez usunięcie elementu z drzewa.

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:

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

Poniższy przykład zgłasza zdarzenie, zmieniając nazwę elementu.

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:

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

Poniższy przykład zgłasza zdarzenie przez ustawienie wartości atrybutu.

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:

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

Uwagi

Określa enum typ zdarzenia, gdy zdarzenie jest zgłaszane dla elementu XObject.

Wszystkie operacje modyfikujące drzewo XML są rozdzielane na serię elementów pierwotnych. Istnieją cztery typy typów typów pierwotnych. Dwa typy pierwotne (Dodaj i Usuń) działają na kolekcjach. Dwa z nich (nazwa i wartość) działają na wystąpieniach. Dla każdego z tych typów pierwotnych istnieje odpowiednie zdarzenie.

Podczas modyfikowania drzewa XML w ramach jednego z tych zdarzeń należy zachować ostrożność, ponieważ może to prowadzić do nieoczekiwanych wyników. Jeśli na przykład otrzymasz Changing zdarzenie i gdy zdarzenie jest przetwarzane, usuniesz węzeł z drzewa, zdarzenie może nie zostać odebrane Changed . Podczas przetwarzania zdarzenia ważne jest zmodyfikowanie drzewa XML innego niż zdarzenie zawierającego węzeł odbierający zdarzenie; Jest to nawet ważne, aby zmodyfikować to samo drzewo, pod warunkiem, że modyfikacje nie mają wpływu na określone węzły, na których zostało zgłoszone zdarzenie. Jeśli jednak zmodyfikujesz obszar drzewa zawierającego węzeł odbierający zdarzenie, zdarzenia, które otrzymujesz, i wpływ na drzewo są niezdefiniowane.

Dotyczy

Zobacz też