Compartir vía


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

Add 0

Se ha agregado o se agregará un objeto XObject a un objeto XContainer.

Name 2

Se ha cambiado o se cambiará el nombre de un XObject.

Remove 1

Se ha quitado o se quitará un XObject de un XContainer.

Value 3

Se ha cambiado o se cambiará el valor de un XObject . Además, un cambio en la serialización de un elemento vacío (ya sea desde una etiqueta vacía al 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 .XObject

Todas las operaciones que modifican el árbol XML se 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 esto podría dar lugar a resultados inesperados. Por ejemplo, si recibe un Changing evento y mientras se procesa el evento, 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