XmlArrayAttribute 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.
öğesinin belirli bir sınıf üyesini XmlSerializer XML öğeleri dizisi olarak seri hale getirmesi gerektiğini belirtir.
public ref class XmlArrayAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)]
public class XmlArrayAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)>]
type XmlArrayAttribute = class
inherit Attribute
Public Class XmlArrayAttribute
Inherits Attribute
- Devralma
- Öznitelikler
Örnekler
Aşağıdaki örnek, bir sınıf örneğini birkaç nesne dizisi içeren bir XML belgesine serileştirir. XmlArrayAttribute XML öğesi dizileri haline gelen üyelere uygulanır.
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Xml;
public ref class Item
{
public:
[XmlElement(ElementName="OrderItem")]
String^ ItemName;
String^ ItemCode;
Decimal ItemPrice;
int ItemQuantity;
};
public ref class BookItem: public Item
{
public:
String^ Title;
String^ Author;
String^ ISBN;
};
// This is the class that will be serialized.
public ref class MyRootClass
{
private:
array<Item^>^items;
public:
/* Here is a simple way to serialize the array as XML. Using the
XmlArrayAttribute, assign an element name and namespace. The
IsNullable property determines whether the element will be
generated if the field is set to a null value. If set to true,
the default, setting it to a null value will cause the XML
xsi:null attribute to be generated. */
[XmlArray(ElementName="MyStrings",
Namespace="http://www.cpandl.com",IsNullable=true)]
array<String^>^MyStringArray;
/* Here is a more complex example of applying an
XmlArrayAttribute. The Items property can contain both Item
and BookItem objects. Use the XmlArrayItemAttribute to specify
that both types can be inserted into the array. */
[XmlArrayItem(ElementName="Item",
IsNullable=true,
Type=Item::typeid,
Namespace="http://www.cpandl.com"),
XmlArrayItem(ElementName="BookItem",
IsNullable=true,
Type=BookItem::typeid,
Namespace="http://www.cohowinery.com")]
[XmlArray]
property array<Item^>^ Items
{
array<Item^>^ get()
{
return items;
}
void set( array<Item^>^value )
{
items = value;
}
}
};
public ref class Run
{
public:
void SerializeDocument( String^ filename )
{
// Creates a new XmlSerializer.
XmlSerializer^ s = gcnew XmlSerializer( MyRootClass::typeid );
// Writing the file requires a StreamWriter.
TextWriter^ myWriter = gcnew StreamWriter( filename );
// Creates an instance of the class to serialize.
MyRootClass^ myRootClass = gcnew MyRootClass;
/* Uses a basic method of creating an XML array: Create and
populate a string array, and assign it to the
MyStringArray property. */
array<String^>^myString = {"Hello","world","!"};
myRootClass->MyStringArray = myString;
/* Uses a more advanced method of creating an array:
create instances of the Item and BookItem, where BookItem
is derived from Item. */
Item^ item1 = gcnew Item;
BookItem^ item2 = gcnew BookItem;
// Sets the objects' properties.
item1->ItemName = "Widget1";
item1->ItemCode = "w1";
item1->ItemPrice = 231;
item1->ItemQuantity = 3;
item2->ItemCode = "w2";
item2->ItemPrice = 123;
item2->ItemQuantity = 7;
item2->ISBN = "34982333";
item2->Title = "Book of Widgets";
item2->Author = "John Smith";
// Fills the array with the items.
array<Item^>^myItems = {item1,item2};
// Sets the class's Items property to the array.
myRootClass->Items = myItems;
/* Serializes the class, writes it to disk, and closes
the TextWriter. */
s->Serialize( myWriter, myRootClass );
myWriter->Close();
}
};
int main()
{
Run^ test = gcnew Run;
test->SerializeDocument( "books.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeDocument("books.xml");
}
public void SerializeDocument(string filename)
{
// Creates a new XmlSerializer.
XmlSerializer s =
new XmlSerializer(typeof(MyRootClass));
// Writing the file requires a StreamWriter.
TextWriter myWriter= new StreamWriter(filename);
// Creates an instance of the class to serialize.
MyRootClass myRootClass = new MyRootClass();
/* Uses a basic method of creating an XML array: Create and
populate a string array, and assign it to the
MyStringArray property. */
string [] myString = {"Hello", "world", "!"};
myRootClass.MyStringArray = myString;
/* Uses a more advanced method of creating an array:
create instances of the Item and BookItem, where BookItem
is derived from Item. */
Item item1 = new Item();
BookItem item2 = new BookItem();
// Sets the objects' properties.
item1.ItemName = "Widget1";
item1.ItemCode = "w1";
item1.ItemPrice = 231;
item1.ItemQuantity = 3;
item2.ItemCode = "w2";
item2.ItemPrice = 123;
item2.ItemQuantity = 7;
item2.ISBN = "34982333";
item2.Title = "Book of Widgets";
item2.Author = "John Smith";
// Fills the array with the items.
Item [] myItems = {item1,item2};
// Sets the class's Items property to the array.
myRootClass.Items = myItems;
/* Serializes the class, writes it to disk, and closes
the TextWriter. */
s.Serialize(myWriter, myRootClass);
myWriter.Close();
}
}
// This is the class that will be serialized.
public class MyRootClass
{
private Item [] items;
/* Here is a simple way to serialize the array as XML. Using the
XmlArrayAttribute, assign an element name and namespace. The
IsNullable property determines whether the element will be
generated if the field is set to a null value. If set to true,
the default, setting it to a null value will cause the XML
xsi:null attribute to be generated. */
[XmlArray(ElementName = "MyStrings",
Namespace = "http://www.cpandl.com", IsNullable = true)]
public string[] MyStringArray;
/* Here is a more complex example of applying an
XmlArrayAttribute. The Items property can contain both Item
and BookItem objects. Use the XmlArrayItemAttribute to specify
that both types can be inserted into the array. */
[XmlArrayItem(ElementName= "Item",
IsNullable=true,
Type = typeof(Item),
Namespace = "http://www.cpandl.com"),
XmlArrayItem(ElementName = "BookItem",
IsNullable = true,
Type = typeof(BookItem),
Namespace = "http://www.cohowinery.com")]
[XmlArray]
public Item []Items
{
get{return items;}
set{items = value;}
}
}
public class Item{
[XmlElement(ElementName = "OrderItem")]
public string ItemName;
public string ItemCode;
public decimal ItemPrice;
public int ItemQuantity;
}
public class BookItem:Item
{
public string Title;
public string Author;
public string ISBN;
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml.Serialization
Imports System.Xml
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.SerializeDocument("books.xml")
End Sub
Public Sub SerializeDocument(ByVal filename As String)
' Creates a new XmlSerializer.
Dim s As New XmlSerializer(GetType(MyRootClass))
' Writing the file requires a StreamWriter.
Dim myWriter As New StreamWriter(filename)
' Creates an instance of the class to serialize.
Dim myRootClass As New MyRootClass()
' Uses a basic method of creating an XML array: Create and
' populate a string array, and assign it to the
' MyStringArray property.
Dim myString() As String = {"Hello", "world", "!"}
myRootClass.MyStringArray = myString
' Uses a more advanced method of creating an array:
' create instances of the Item and BookItem, where BookItem
' is derived from Item.
Dim item1 As New Item()
Dim item2 As New BookItem()
' Sets the objects' properties.
With item1
.ItemName = "Widget1"
.ItemCode = "w1"
.ItemPrice = 231
.ItemQuantity = 3
End With
With item2
.ItemCode = "w2"
.ItemPrice = 123
.ItemQuantity = 7
.ISBN = "34982333"
.Title = "Book of Widgets"
.Author = "John Smith"
End With
' Fills the array with the items.
Dim myItems() As Item = {item1, item2}
' Set class's Items property to the array.
myRootClass.Items = myItems
' Serializes the class, writes it to disk, and closes
' the TextWriter.
s.Serialize(myWriter, myRootClass)
myWriter.Close()
End Sub
End Class
' This is the class that will be serialized.
Public Class MyRootClass
Private myItems() As Item
' Here is a simple way to serialize the array as XML. Using the
' XmlArrayAttribute, assign an element name and namespace. The
' IsNullable property determines whether the element will be
' generated if the field is set to a null value. If set to true,
' the default, setting it to a null value will cause the XML
' xsi:null attribute to be generated.
<XmlArray(ElementName := "MyStrings", _
Namespace := "http://www.cpandl.com", _
IsNullable := True)> _
Public MyStringArray() As String
' Here is a more complex example of applying an
' XmlArrayAttribute. The Items property can contain both Item
' and BookItem objects. Use the XmlArrayItemAttribute to specify
' that both types can be inserted into the array.
<XmlArrayItem(ElementName := "Item", _
IsNullable := True, _
Type := GetType(Item), _
Namespace := "http://www.cpandl.com"), _
XmlArrayItem(ElementName := "BookItem", _
IsNullable := True, _
Type := GetType(BookItem), _
Namespace := "http://www.cohowinery.com"), _
XmlArray()> _
Public Property Items As Item()
Get
Return myItems
End Get
Set
myItems = value
End Set
End Property
End Class
Public Class Item
<XmlElement(ElementName := "OrderItem")> _
Public ItemName As String
Public ItemCode As String
Public ItemPrice As Decimal
Public ItemQuantity As Integer
End Class
Public Class BookItem
Inherits Item
Public Title As String
Public Author As String
Public ISBN As String
End Class
Açıklamalar
, XmlArrayAttribute 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.
bir ortak alana veya bir nesne dizisi döndüren okuma/yazma özelliğine uygulayabilirsiniz XmlArrayAttribute . Ayrıca, arabirimi uygulayan bir nesne döndüren bir veya herhangi bir ArrayList alan döndüren koleksiyonlara ve alanlara IEnumerable da uygulayabilirsiniz.
bir sınıf üyesine uyguladığınızdaXmlArrayAttribute, sınıfının yöntemi XmlSerializer bu Serialize üyeden iç içe geçmiş bir XML öğeleri dizisi oluşturur. XML şema belgesi (.xsd dosyası), gibi bir diziyi complexType
belirtir. Örneğin, seri hale getirilecek sınıf bir satınalma siparişini temsil ediyorsa, öğesini sipariş öğelerini temsil eden bir nesne dizisi döndüren bir ortak alana uygulayarak XmlArrayAttribute bir satın alınan öğeler dizisi oluşturabilirsiniz.
Karmaşık veya ilkel tür nesnelerinin dizisini döndüren bir ortak alana veya özelliğe hiçbir öznitelik uygulanmazsa, XmlSerializer varsayılan olarak xml öğelerinin iç içe dizisini oluşturur. Hangi XML öğelerinin oluşturulduğunu daha hassas bir şekilde denetlemek için alan veya özelliğe bir XmlArrayItemAttributeXmlArrayAttribute ve uygulayın. Örneğin, varsayılan olarak, oluşturulan XML öğesinin adı üye tanımlayıcısından türetilir Özelliğini ayarlayarak oluşturulan XML öğesinin ElementName adını değiştirebilirsiniz.
Belirli bir türdeki öğeleri ve bu türden türetilen tüm sınıfları içeren bir diziyi serileştirirseniz, türlerin her birini bildirmek için öğesini XmlArrayItemAttribute kullanmanız gerekir.
Not
daha uzun XmlArrayAttributeyerine kodunuzda kullanabilirsinizXmlArray
.
Öznitelikleri kullanma hakkında daha fazla bilgi için bkz . Öznitelikler.
Oluşturucular
XmlArrayAttribute() |
XmlArrayAttribute sınıfının yeni bir örneğini başlatır. |
XmlArrayAttribute(String) |
Sınıfının yeni bir örneğini XmlArrayAttribute başlatır ve XML belge örneğinde oluşturulan XML öğesi adını belirtir. |
Özellikler
ElementName |
Serileştirilmiş diziye verilen XML öğesi adını alır veya ayarlar. |
Form |
tarafından XmlSerializer oluşturulan XML öğesi adının nitelenmiş mi yoksa nitelenmemiş mi olduğunu belirten bir değer alır veya ayarlar. |
IsNullable |
öğesinin bir üyeyiXmlSerializer, özniteliği olarak ayarlanmış |
Namespace |
XML öğesinin 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. |
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ı belirten 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) |