Dil

XObjectChange Sabit listesi

Tanım

Bir XObject için bir olay oluşturulduğunda, olay türünü belirtir.

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

Alanlar

Name Değer Description
Add 0

bir XObject öğesine eklendi veya eklenecektir XContainer.

Remove 1

bir XObject olmuştur veya öğesinden XContainerkaldırılacaktır.

Name 2

veya XObject yeniden adlandırılacaktı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 öğe 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 XObjectbir olay tetiklendiğinde olay 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. İlkel öğelerden ikisi (Ekle ve Kaldır) koleksiyonlar üzerinde hareket eder. Bunlardan ikisi (Ad ve Değer) örneklere göre hareket eder. 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 oluşturulduğu belirli düğümleri etkilememesi koşuluyla aynı ağacı değiştirmek bile geçerlidir. Ancak, olayı alan düğümü içeren ağaç alanını değiştirirseniz, aldığınız olaylar ve ağaç üzerindeki etkisi tanımlanmamış olur.

Şunlara uygulanır

Ayrıca bkz.