XmlElementAttribute Kelas
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.
Menunjukkan bahwa bidang publik atau properti mewakili elemen XML saat XmlSerializer menserialisasikan atau mendeserialisasi objek yang berisinya.
public ref class XmlElementAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlElementAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)>]
type XmlElementAttribute = class
inherit Attribute
Public Class XmlElementAttribute
Inherits Attribute
- Warisan
- Atribut
Contoh
Contoh berikut menserialisasikan kelas bernama Group dan menerapkannya XmlElementAttribute ke beberapa anggotanya. Bidang bernama Employees mengembalikan array Employee objek. Dalam hal ini, XmlElementAttribute menentukan bahwa XML yang dihasilkan tidak akan ditumpuk (yang merupakan perilaku default item dalam array).
using System;
using System.Collections;
using System.IO;
using System.Xml.Serialization;
public class Group
{
/* Set the element name and namespace of the XML element.
By applying an XmlElementAttribute to an array, you instruct
the XmlSerializer to serialize the array as a series of XML
elements, instead of a nested set of elements. */
[XmlElement(
ElementName = "Members",
Namespace = "http://www.cpandl.com")]
public Employee[] Employees;
[XmlElement(DataType = "double",
ElementName = "Building")]
public double GroupID;
[XmlElement(DataType = "hexBinary")]
public byte [] HexBytes;
[XmlElement(DataType = "boolean")]
public bool IsActive;
[XmlElement(Type = typeof(Manager))]
public Employee Manager;
[XmlElement(typeof(int),
ElementName = "ObjectNumber"),
XmlElement(typeof(string),
ElementName = "ObjectString")]
public ArrayList ExtraInfo;
}
public class Employee
{
public string Name;
}
public class Manager:Employee{
public int Level;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeObject("FirstDoc.xml");
test.DeserializeObject("FirstDoc.xml");
}
public void SerializeObject(string filename)
{
// Create the XmlSerializer.
XmlSerializer s = new XmlSerializer(typeof(Group));
// To write the file, a TextWriter is required.
TextWriter writer = new StreamWriter(filename);
/* Create an instance of the group to serialize, and set
its properties. */
Group group = new Group();
group.GroupID = 10.089f;
group.IsActive = false;
group.HexBytes = new byte[1]{Convert.ToByte(100)};
Employee x = new Employee();
Employee y = new Employee();
x.Name = "Jack";
y.Name = "Jill";
group.Employees = new Employee[2]{x,y};
Manager mgr = new Manager();
mgr.Name = "Sara";
mgr.Level = 4;
group.Manager = mgr;
/* Add a number and a string to the
ArrayList returned by the ExtraInfo property. */
group.ExtraInfo = new ArrayList();
group.ExtraInfo.Add(42);
group.ExtraInfo.Add("Answer");
// Serialize the object, and close the TextWriter.
s.Serialize(writer, group);
writer.Close();
}
public void DeserializeObject(string filename)
{
FileStream fs = new FileStream(filename, FileMode.Open);
XmlSerializer x = new XmlSerializer(typeof(Group));
Group g = (Group) x.Deserialize(fs);
Console.WriteLine(g.Manager.Name);
Console.WriteLine(g.GroupID);
Console.WriteLine(g.HexBytes[0]);
foreach(Employee e in g.Employees)
{
Console.WriteLine(e.Name);
}
}
}
Imports System.Collections
Imports System.IO
Imports System.Xml.Serialization
Public Class Group
' Set the element name and namespace of the XML element.
<XmlElement(ElementName := "Members", _
Namespace := "http://www.cpandl.com")> _
Public Employees() As Employee
<XmlElement(DataType := "double", _
ElementName := "Building")> _
Public GroupID As Double
<XmlElement(DataType := "hexBinary")> _
Public HexBytes() As Byte
<XmlElement(DataType := "boolean")> _
Public IsActive As Boolean
<XmlElement(GetType(Manager))> _
Public Manager As Employee
<XmlElement(GetType(Integer), _
ElementName := "ObjectNumber"), _
XmlElement(GetType(String), _
ElementName := "ObjectString")> _
Public ExtraInfo As ArrayList
End Class
Public Class Employee
Public Name As String
End Class
Public Class Manager
Inherits Employee
Public Level As Integer
End Class
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.SerializeObject("FirstDoc.xml")
test.DeserializeObject("FirstDoc.xml")
End Sub
Public Sub SerializeObject(filename As String)
' Create the XmlSerializer.
Dim s As New XmlSerializer(GetType(Group))
' To write the file, a TextWriter is required.
Dim writer As New StreamWriter(filename)
' Create an instance of the group to serialize, and set
' its properties.
Dim group As New Group()
group.GroupID = 10.089f
group.IsActive = False
group.HexBytes = New Byte() {Convert.ToByte(100)}
Dim x As New Employee()
Dim y As New Employee()
x.Name = "Jack"
y.Name = "Jill"
group.Employees = New Employee() {x, y}
Dim mgr As New Manager()
mgr.Name = "Sara"
mgr.Level = 4
group.Manager = mgr
' Add a number and a string to the
' ArrayList returned by the ExtraInfo property.
group.ExtraInfo = New ArrayList()
group.ExtraInfo.Add(42)
group.ExtraInfo.Add("Answer")
' Serialize the object, and close the TextWriter.
s.Serialize(writer, group)
writer.Close()
End Sub
Public Sub DeserializeObject(filename As String)
Dim fs As New FileStream(filename, FileMode.Open)
Dim x As New XmlSerializer(GetType(Group))
Dim g As Group = CType(x.Deserialize(fs), Group)
Console.WriteLine(g.Manager.Name)
Console.WriteLine(g.GroupID)
Console.WriteLine(g.HexBytes(0))
Dim e As Employee
For Each e In g.Employees
Console.WriteLine(e.Name)
Next e
End Sub
End Class
Keterangan
XmlElementAttribute milik keluarga atribut yang mengontrol bagaimana XmlSerializer serialisasi atau deserialisasi objek. Untuk daftar lengkap atribut serupa, lihat Atribut yang Mengontrol Serialisasi XML.
Dokumen XML biasanya berisi elemen XML, yang masing-masing terdiri dari tiga bagian: tag pembuka dengan atribut yang mungkin, tag penutup, dan data di antara tag. Tag XML dapat ditumpuk--yaitu, data antar tag juga dapat berupa elemen XML. Kapasitas satu elemen ini untuk mengapit elemen lain memungkinkan dokumen untuk berisi hierarki data. Elemen XML juga dapat menyertakan atribut.
Terapkan ke XmlElementAttribute bidang publik atau properti baca/tulis publik untuk mengontrol karakteristik elemen XML seperti nama elemen dan namespace.
XmlElementAttribute dapat diterapkan beberapa kali ke bidang yang mengembalikan array objek. Tujuan dari ini adalah untuk menentukan (melalui Type properti) berbagai jenis yang dapat dimasukkan ke dalam array. Misalnya, array dalam kode C# berikut menerima string dan bilangan bulat.
public class Things{
[XmlElement(Type = typeof(string)),
XmlElement(Type = typeof(int))]
public object[] StringsAndInts;
}
Ini menghasilkan XML yang mungkin menyerupai berikut ini.
<Things>
<string>Hello</string>
<int>999</int>
<string>World</string>
</Things>
Perhatikan bahwa saat Anda menerapkan XmlElementAttribute beberapa kali tanpa menentukan ElementName nilai properti, elemen dinamai sesuai dengan jenis objek yang dapat diterima.
Jika Anda menerapkan ke XmlElementAttribute bidang atau properti yang mengembalikan array, item dalam array dikodekan sebagai urutan elemen XML.
Sebaliknya jika XmlElementAttribute tidak diterapkan ke bidang atau properti seperti itu, item dalam array dikodekan sebagai urutan elemen, disarangkan di bawah elemen yang dinamai berdasarkan bidang atau properti. (Gunakan XmlArrayAttribute atribut dan XmlArrayItemAttribute untuk mengontrol bagaimana array diserialisasikan.)
Anda dapat mengatur Type properti untuk menentukan jenis yang berasal dari jenis bidang atau properti asli--yaitu, bidang atau properti yang telah Anda terapkan XmlElementAttribute.
Jika bidang atau properti mengembalikan ArrayList, Anda dapat menerapkan beberapa instans XmlElementAttribute ke anggota. Untuk setiap instans, atur Type properti ke jenis objek yang dapat dimasukkan ke dalam array.
Untuk informasi selengkapnya tentang menggunakan atribut, lihat Atribut.
Nota
Anda dapat menggunakan kata XmlElement dalam kode Anda alih-alih lebih lama XmlElementAttribute.
Konstruktor
| Nama | Deskripsi |
|---|---|
| XmlElementAttribute() |
Menginisialisasi instans baru dari kelas XmlElementAttribute. |
| XmlElementAttribute(String, Type) |
Menginisialisasi instans XmlElementAttribute baru dan menentukan nama elemen XML dan jenis turunan untuk anggota yang XmlElementAttribute diterapkan. Jenis anggota ini digunakan ketika XmlSerializer menserialisasikan objek yang berisinya. |
| XmlElementAttribute(String) |
Menginisialisasi instans XmlElementAttribute baru kelas dan menentukan nama elemen XML. |
| XmlElementAttribute(Type) |
Menginisialisasi instans XmlElementAttribute baru kelas dan menentukan jenis untuk anggota yang XmlElementAttribute diterapkan. Jenis ini digunakan oleh XmlSerializer ketika membuat serialisasi atau deserialisasi objek yang berisinya. |
Properti
| Nama | Deskripsi |
|---|---|
| DataType |
Mendapatkan atau mengatur jenis data definisi Skema XML (XSD) dari elemen XML yang dihasilkan oleh XmlSerializer. |
| ElementName |
Mendapatkan atau mengatur nama elemen XML yang dihasilkan. |
| Form |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah elemen memenuhi syarat. |
| IsNullable |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah XmlSerializer harus menserialisasikan anggota yang diatur ke |
| Namespace |
Mendapatkan atau mengatur namespace yang ditetapkan ke elemen XML yang menghasilkan saat kelas diserialisasikan. |
| Order |
Mendapatkan atau mengatur urutan eksplisit di mana elemen diserialisasikan atau dideserialisasi. |
| Type |
Mendapatkan atau mengatur jenis objek yang digunakan untuk mewakili elemen XML. |
| TypeId |
Ketika diimplementasikan dalam kelas turunan, mendapatkan pengidentifikasi unik untuk Attributeini. (Diperoleh dari Attribute) |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
| GetHashCode() |
Mengembalikan kode hash untuk instans ini. (Diperoleh dari Attribute) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| IsDefaultAttribute() |
Ketika ditimpa dalam kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan. (Diperoleh dari Attribute) |
| Match(Object) |
Saat ditimpa dalam kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai. (Diperoleh dari Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka. (Diperoleh dari Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1). (Diperoleh dari Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Menyediakan akses ke properti dan metode yang diekspos oleh objek. (Diperoleh dari Attribute) |
Berlaku untuk
Lihat juga
- XmlArrayAttribute
- XmlAttributeOverrides
- XmlAttributes
- XmlElementAttributes
- XmlElements
- XmlRootAttribute
- XmlSerializer
- Memperkenalkan Serialisasi XML
- Cara: Menentukan Nama Elemen Alternatif untuk Aliran XML
- Mengontrol Serialisasi XML Menggunakan Atribut
- Contoh Serialisasi XML
- Alat Definisi Skema XML (Xsd.exe)