XObjectChange Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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.