XObjectChange Sabit listesi

Tanım

için XObjectbir olay tetiklendiğinde olay türünü belirtir.

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

Alanlar

Add 0

öğesine XObject eklendi veya eklenecek XContainer.

Name 2

veya XObject yeniden adlandırılacaktır.

Remove 1

veya XObject öğesinden XContainerkaldırılmıştır.

Value 3

değerinin XObject değeri değiştirildi veya değiştirilecek. Buna ek olarak, boş bir öğenin seri hale getirilmesinde yapılan bir değişiklik (boş bir etiketten başlangıç/bitiş etiketi çiftine veya tam tersi) bu olayı tetikler.

Örnekler

Aşağıdaki örnek, ağaca bir öğe ekleyerek bir olay oluşturur.

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"));  

Bu örnek aşağıdaki çıkışı oluşturur:

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

Aşağıdaki örnek, ağaçtan bir öğeyi kaldırarak bir olay oluşturur.

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();  

Bu örnek aşağıdaki çıkışı oluşturur:

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

Aşağıdaki örnek, bir öğenin adını değiştirerek bir olay oluşturur.

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";  

Bu örnek aşağıdaki çıkışı oluşturur:

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

Aşağıdaki örnek, bir özniteliğin değerini ayarlayarak bir olay oluşturur.

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";  

Bu örnek aşağıdaki çıkışı oluşturur:

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

Açıklamalar

Bu enum , için bir olay tetiklendiğinde XObjectolay türünü belirtir.

XML ağacını değiştiren tüm işlemler bir dizi temel öğeye ayrılır. Dört tür ilkel vardır. İlkellerden ikisi (Ekle ve Kaldır) koleksiyonlar üzerinde eylemde bulunur. Bunlardan ikisi (Ad ve Değer) örnekler üzerinde işlem gösterir. Bu ilkellerin her biri için karşılık gelen bir olay vardır.

Bu olaylardan birinin içindeki XML ağacını değiştirirken dikkatli olmanız gerekir, çünkü bunu yapmak beklenmeyen sonuçlara yol açabilir. Örneğin, bir Changing olay alırsanız ve olay işlenirken düğümü ağaçtan kaldırırsanız, olayı almayabilirsiniz Changed . Bir olay işlenirken, olayı alan düğümü içerenden başka bir XML ağacını değiştirmek geçerli olur; Değişikliklerin olayın tetiklendiği belirli düğümleri etkilememesi koşuluyla aynı ağacı değiştirmek bile geçerlidir. Ancak, olayı alan düğümü içeren ağacın alanını değiştirirseniz, aldığınız olaylar ve ağaç üzerindeki etkisi tanımlanmamış olur.

Şunlara uygulanır

Ayrıca bkz.