XObjectChange Výčet

Definice

Určuje typ události při vyvolání události pro 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
Dědičnost
XObjectChange

Pole

Add 0

XObjectDo došlo nebo bude přidán do XContainer .An XObject has been or will be added to an XContainer.

Name 2

XObjectByl nebo přejmenován.An XObject has been or will be renamed.

Remove 1

Byl XObject nebo odebrán z XContainer .An XObject has been or will be removed from an XContainer.

Value 3

Hodnota XObject nebo se změní.The value of an XObject has been or will be changed. Kromě toho se tato událost vyvolává změnou v serializaci prázdného prvku (buď z prázdné značky do dvojice značek Start, end, nebo naopak).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.

Příklady

Následující příklad vyvolá událost přidáním elementu do stromu.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"));  

Tento příklad vytvoří následující výstup: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  

Následující příklad vyvolá událost odebráním elementu ze stromové struktury.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();  

Tento příklad vytvoří následující výstup: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  

Následující příklad vyvolává událost změnou názvu 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";  

Tento příklad vytvoří následující výstup: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  

Následující příklad vyvolá událost nastavením hodnoty atributu.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";  

Tento příklad vytvoří následující výstup: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  

Poznámky

enumUrčuje typ události při vyvolání události pro XObject .This enum specifies the event type when an event is raised for an XObject.

Všechny operace, které upravují stromové struktury XML, se rozdělují dolů na řadu primitivních hodnot.All operations that modify the XML tree break down to a series of primitives. Existují čtyři typy primitivních typů.There are four types of primitives. Dvě z primitivních elementů (přidávání a odebírání) se chovají v kolekcích.Two of the primitives (Add and Remove) act on collections. Dvě z nich (název a hodnota) se chovají na instancích.Two of them (Name and Value) act on instances. Pro každý z těchto primitiv existuje odpovídající událost.There is a corresponding event for each of these primitives.

Při úpravách stromu XML v rámci jedné z těchto událostí byste měli být opatrní, protože to může vést k neočekávaným výsledkům.You should be careful when modifying an XML tree within one of these events, because doing this might lead to unexpected results. Pokud například obdržíte Changing událost a událost se zpracovává, odeberete uzel ze stromu, ale nemůžete Changed událost přijmout.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. Při zpracování události je platný pro úpravu stromu XML, který je jiný než ten, který obsahuje uzel, který přijímá událost. je dokonce platný, pokud chcete změnit stejný strom, pokud změny neovlivní konkrétní uzly, na kterých byla událost vyvolána.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. Nicméně pokud upravíte oblast stromu, která obsahuje uzel přijímající událost, události, které obdržíte, a dopad na strom nejsou definovány.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.

Platí pro