XObjectChange Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan jenis peristiwa saat peristiwa dinaikkan untuk XObject.
public enum class XObjectChange
public enum XObjectChange
type XObjectChange =
Public Enum XObjectChange
- Warisan
Bidang
Add | 0 | XObject telah atau akan ditambahkan ke XContainer. |
Name | 2 | XObject telah atau akan diganti namanya. |
Remove | 1 | XObject telah atau akan dihapus dari XContainer. |
Value | 3 | Nilai dari telah XObject atau akan diubah. Selain itu, perubahan serialisasi elemen kosong (baik dari tag kosong ke pasangan tag awal/akhir atau sebaliknya) memunculkan peristiwa ini. |
Contoh
Contoh berikut menaikkan peristiwa dengan menambahkan elemen ke pohon.
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"));
Contoh ini mencetak output berikut:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Add
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Add
Contoh berikut memunculkan peristiwa dengan menghapus elemen dari pohon.
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();
Contoh ini mencetak output berikut:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Remove
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Remove
Contoh berikut memunculkan peristiwa dengan mengubah nama elemen.
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";
Contoh ini mencetak output berikut:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Name
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Name
Contoh berikut menaikkan peristiwa dengan mengatur nilai atribut.
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";
Contoh ini mencetak output berikut:
Changing event raised
Sender: System.Xml.Linq.XAttribute
Changing: Value
Changed event raised
Sender: System.Xml.Linq.XAttribute
Changed: Value
Keterangan
Ini enum
menentukan jenis peristiwa ketika peristiwa dinaikkan untuk XObject.
Semua operasi yang memodifikasi pohon XML diuraikan ke serangkaian primitif. Ada empat jenis primitif. Dua primitif (Tambahkan dan Hapus) bertindak pada koleksi. Dua di antaranya (Nama dan Nilai) bertindak berdasarkan instans. Ada peristiwa yang sesuai untuk masing-masing primitif ini.
Anda harus berhati-hati saat memodifikasi pohon XML dalam salah satu peristiwa ini, karena melakukan ini dapat menyebabkan hasil yang tidak terduga. Misalnya, jika Anda menerima Changing peristiwa, dan saat peristiwa sedang diproses, Anda menghapus simpul dari pohon, Anda mungkin tidak menerima peristiwa tersebut Changed . Saat peristiwa sedang diproses, valid untuk memodifikasi pohon XML selain yang berisi simpul yang menerima peristiwa; bahkan valid untuk memodifikasi pohon yang sama asalkan modifikasi tidak memengaruhi simpul tertentu tempat peristiwa dinaikkan. Namun, jika Anda memodifikasi area pohon yang berisi simpul yang menerima peristiwa, peristiwa yang Anda terima dan dampaknya ke pohon tidak ditentukan.