XObjectChange Enumeración

Definición

Especifica el tipo de evento cuando se genera éste para un XObject.

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

Campos

Nombre Valor Description
Add 0

Se XObject ha agregado o se agregará a .XContainer

Remove 1

Se XObject ha quitado o se ha quitado de .XContainer

Name 2

XObject Se ha cambiado el nombre de o .

Value 3

El valor de un XObject objeto ha sido o se cambiará. Además, un cambio en la serialización de un elemento vacío (ya sea desde una etiqueta vacía hasta el par de etiquetas de inicio/fin o viceversa) genera este evento.

Ejemplos

En el ejemplo siguiente se genera un evento agregando un elemento al árbol.

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

Este ejemplo produce el siguiente resultado:

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

En el ejemplo siguiente se genera un evento quitando un elemento del árbol.

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

Este ejemplo produce el siguiente resultado:

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

En el ejemplo siguiente se genera un evento cambiando el nombre de un elemento.

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

Este ejemplo produce el siguiente resultado:

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

En el ejemplo siguiente se genera un evento estableciendo el valor de un atributo .

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

Este ejemplo produce el siguiente resultado:

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

Comentarios

Especifica enum el tipo de evento cuando se genera un evento para un XObject.

Todas las operaciones que modifican el árbol XML desglosan en una serie de primitivos. Hay cuatro tipos de primitivos. Dos de los primitivos (Agregar y quitar) actúan en colecciones. Dos de ellos (Nombre y Valor) actúan en instancias. Hay un evento correspondiente para cada uno de estos primitivos.

Debe tener cuidado al modificar un árbol XML dentro de uno de estos eventos, ya que hacerlo podría dar lugar a resultados inesperados. Por ejemplo, si recibe un Changing evento y mientras el evento se está procesando, quite el nodo del árbol, es posible que no reciba el Changed evento. Cuando se procesa un evento, es válido modificar un árbol XML distinto del que contiene el nodo que recibe el evento; incluso es válido modificar el mismo árbol siempre que las modificaciones no afecten a los nodos específicos en los que se generó el evento. Sin embargo, si modifica el área del árbol que contiene el nodo que recibe el evento, los eventos que recibe y el impacto en el árbol no están definidos.

Se aplica a

Consulte también