XObjectChange Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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.