XmlElementAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
bir ortak alan veya özelliğin, onu içeren nesneyi seri hale getirdiğinde veya seri durumdan XmlSerializer çıkardığında bir XML öğesini temsil ettiğini gösterir.
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
- Devralma
- Öznitelikler
Örnekler
Aşağıdaki örnek adlı Group
bir sınıfı serileştirir ve birkaç üyesine uygular XmlElementAttribute . adlı Employees
alan bir nesne dizisi Employee
döndürür. Bu durumda, XmlElementAttribute sonuçta elde edilen XML'in iç içe yerleştirilmeyeceğini belirtir (bu, bir dizideki öğelerin varsayılan davranışıdır).
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::Collections;
using namespace System::IO;
using namespace System::Xml::Serialization;
public ref class Employee
{
public:
String^ Name;
};
public ref class Manager: public Employee
{
public:
int Level;
};
public ref class Group
{
public:
/* 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")]
array<Employee^>^Employees;
[XmlElement(DataType="snippet1>",
ElementName="Building")]
double GroupID;
[XmlElement(DataType="hexBinary")]
array<Byte>^HexBytes;
[XmlElement(DataType="boolean")]
bool IsActive;
[XmlElement(Type=::Manager::typeid)]
Employee^ Manager;
[XmlElement(Int32::typeid,
ElementName="ObjectNumber"),
XmlElement(String::typeid,
ElementName="ObjectString")]
ArrayList^ ExtraInfo;
};
void SerializeObject( String^ filename )
{
// Create the XmlSerializer.
XmlSerializer^ s = gcnew XmlSerializer( Group::typeid );
// To write the file, a TextWriter is required.
TextWriter^ writer = gcnew StreamWriter( filename );
/* Create an instance of the group to serialize, and set
its properties. */
Group^ group = gcnew Group;
group->GroupID = 10.089f;
group->IsActive = false;
array<Byte>^temp0 = {Convert::ToByte( 100 )};
group->HexBytes = temp0;
Employee^ x = gcnew Employee;
Employee^ y = gcnew Employee;
x->Name = "Jack";
y->Name = "Jill";
array<Employee^>^temp1 = {x,y};
group->Employees = temp1;
Manager^ mgr = gcnew 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 = gcnew ArrayList;
group->ExtraInfo->Add( 42 );
group->ExtraInfo->Add( "Answer" );
// Serialize the object, and close the TextWriter.
s->Serialize( writer, group );
writer->Close();
}
void DeserializeObject( String^ filename )
{
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
XmlSerializer^ x = gcnew XmlSerializer( Group::typeid );
Group^ g = dynamic_cast<Group^>(x->Deserialize( fs ));
Console::WriteLine( g->Manager->Name );
Console::WriteLine( g->GroupID );
Console::WriteLine( g->HexBytes[ 0 ] );
IEnumerator^ myEnum = g->Employees->GetEnumerator();
while ( myEnum->MoveNext() )
{
Employee^ e = safe_cast<Employee^>(myEnum->Current);
Console::WriteLine( e->Name );
}
}
int main()
{
SerializeObject( "FirstDoc.xml" );
DeserializeObject( "FirstDoc.xml" );
}
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
Açıklamalar
, XmlElementAttribute bir nesneyi seri hale getirme veya seri durumdan çıkarma işlemini XmlSerializer denetleen bir öznitelik ailesine aittir. Benzer özniteliklerin tam listesi için bkz. XML Serileştirmesini Denetleen Öznitelikler.
XML belgesi genellikle her biri üç bölümden oluşan XML öğeleri içerir: olası özniteliklere sahip bir açma etiketi, bir kapanış etiketi ve etiketler arasındaki veriler. XML etiketleri iç içe yerleştirilebilir; diğer bir ifadeyle etiketler arasındaki veriler DE XML öğeleri olabilir. Bir öğenin başka bir öğeyi kapsayan bu kapasitesi, belgenin veri hiyerarşileri içermesine olanak tanır. XML öğesi öznitelikleri de içerebilir.
XmlElementAttribute Öğe adı ve ad alanı gibi XML öğelerinin özelliklerini denetlemek için ortak alanlara veya genel okuma/yazma özelliklerine uygulayın.
, XmlElementAttribute bir nesne dizisi döndüren bir alana birden çok kez uygulanabilir. Bunun amacı, diziye eklenebilen Type farklı türleri belirtmektir (özelliği aracılığıyla). Örneğin, aşağıdaki C# kodundaki dizi hem dizeleri hem de tamsayıları kabul eder.
public class Things{
[XmlElement(Type = typeof(string)),
XmlElement(Type = typeof(int))]
public object[] StringsAndInts;
}
Bu, aşağıdakine benzer bir XML ile sonuçlanabilir.
<Things>
<string>Hello</string>
<int>999</int>
<string>World</string>
</Things>
Bir özellik değeri belirtmeden ElementName birden çok kez uyguladığınızda XmlElementAttribute öğelerin kabul edilebilir nesnelerin türünden sonra adlandırıldığını unutmayın.
öğesini XmlElementAttribute bir dizi döndüren bir alana veya özelliğe uygularsanız, dizideki öğeler bir XML öğeleri dizisi olarak kodlanır.
Buna karşılık, böyle bir alan veya özelliğe uygulanmazsa XmlElementAttribute , dizideki öğeler, alan veya özelliğin adını taşıyan bir öğenin altında iç içe yerleştirilmiş bir öğe dizisi olarak kodlanır. (Dizinin seri hale getirilmeyi denetlemek için ve XmlArrayItemAttribute özniteliklerini kullanınXmlArrayAttribute.)
özelliğini, özgün alanın veya özelliğin türünden türetilen bir tür (yani, uygulamasını uyguladığınız XmlElementAttributealan veya özellik) belirtecek şekilde ayarlayabilirsinizType.
Bir alan veya özellik bir ArrayListdöndürürse, öğesinin XmlElementAttribute birden çok örneğini üyeye uygulayabilirsiniz. Her örnek için özelliğini diziye eklenebilen bir nesne türüne ayarlayın Type .
Öznitelikleri kullanma hakkında daha fazla bilgi için bkz . Öznitelikler.
Not
uzun yerine kodunuzda sözcüğünü XmlElement
XmlElementAttributekullanabilirsiniz.
Oluşturucular
XmlElementAttribute() |
XmlElementAttribute sınıfının yeni bir örneğini başlatır. |
XmlElementAttribute(String) |
sınıfının yeni bir örneğini XmlElementAttribute başlatır ve XML öğesinin adını belirtir. |
XmlElementAttribute(String, Type) |
öğesinin XmlElementAttribute yeni bir örneğini başlatır ve XML öğesinin adını ve uygulandığı üye XmlElementAttribute için türetilmiş bir türü belirtir. Bu üye türü, onu içeren nesneyi seri hale getirdiğinde XmlSerializer kullanılır. |
XmlElementAttribute(Type) |
sınıfının yeni bir örneğini XmlElementAttribute başlatır ve öğesinin uygulandığı üye XmlElementAttribute için bir tür belirtir. Bu tür, onu içeren nesneyi serileştirirken veya seri durumdan çıkarırken tarafından XmlSerializer kullanılır. |
Özellikler
DataType |
tarafından XmlSerializeroluşturulan XML öğesinin XML Şema tanımı (XSD) veri türünü alır veya ayarlar. |
ElementName |
Oluşturulan XML öğesinin adını alır veya ayarlar. |
Form |
Öğesinin nitelenmiş olup olmadığını belirten bir değer alır veya ayarlar. |
IsNullable |
özniteliği olarak ayarlanmış boş bir etiket |
Namespace |
Sınıf seri hale getirildiğinde sonuç veren XML öğesine atanan ad alanını alır veya ayarlar. |
Order |
Öğelerin seri hale getirildiği veya seri durumdan çıkarıldığı açık sırayı alır veya ayarlar. |
Type |
XML öğesini temsil etmek için kullanılan nesne türünü alır veya ayarlar. |
TypeId |
Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır. (Devralındığı yer: Attribute) |
Yöntemler
Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür. (Devralındığı yer: Attribute) |
GetHashCode() |
Bu örneğe ilişkin karma kodu döndürür. (Devralındığı yer: Attribute) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
IsDefaultAttribute() |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir. (Devralındığı yer: Attribute) |
Match(Object) |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1). (Devralındığı yer: Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar. (Devralındığı yer: Attribute) |
Şunlara uygulanır
Ayrıca bkz.
- XmlArrayAttribute
- XmlAttributeOverrides
- XmlAttributes
- XmlElementAttributes
- XmlElements
- XmlRootAttribute
- XmlSerializer
- XML Serileştirmeye Giriş
- Nasıl yapılır: XML Akışı için Alternatif Öğe Adı Belirtme
- Öznitelikleri Kullanarak XML Serileştirmeyi Denetleme
- XML Serileştirme Örnekleri
- XML Şema Tanımı Aracı (Xsd.exe)