XmlArrayItemAttribute.DataType Özellik

Tanım

Oluşturulan XML öğesinin XML veri türünü alır veya ayarlar.

public:
 property System::String ^ DataType { System::String ^ get(); void set(System::String ^ value); };
public string DataType { get; set; }
member this.DataType : string with get, set
Public Property DataType As String

Özellik Değeri

String

XML şema tanımı (XSD) veri türü.

Örnekler

Aşağıdaki örnek adlı PurchaseOrderbir sınıfı serileştirir. Sınıfın XmlArrayItemAttribute birkaç örneği üç üyeye uygulanır ve DataType her örneğin özelliği dizide izin verilen bir türe ayarlanır.

#using <System.dll>
#using <System.xml.dll>

using namespace System;
using namespace System::Collections;
using namespace System::Xml;
using namespace System::Xml::Serialization;
using namespace System::IO;
using namespace System::Xml::Schema;
public ref class Item
{
public:
   String^ ItemID;
   Item(){}

   Item( String^ id )
   {
      ItemID = id;
   }
};

public ref class NewItem: public Item
{
public:
   String^ Category;
   NewItem(){}

   NewItem( String^ id, String^ cat )
   {
      ItemID = id;
      Category = cat;
   }
};

public ref class PurchaseOrder
{
public:

   [XmlArrayItem(DataType="gMonth",
   ElementName="MyMonths",
   Namespace="http://www.cohowinery.com")]
   array<String^>^Months;

   [XmlArrayItem(Item::typeid),XmlArrayItem(NewItem::typeid)]
   array<Item^>^Items;

   [XmlArray(IsNullable=true)]
   [XmlArrayItem(String::typeid),
   XmlArrayItem(Double::typeid),
   XmlArrayItem(NewItem::typeid)]
   array<Object^>^Things;
};

void SerializeObject( String^ filename )
{
   // Create an instance of the XmlSerializer class;
   // specify the type of object to serialize.
   XmlSerializer^ serializer = gcnew XmlSerializer( PurchaseOrder::typeid );
   TextWriter^ writer = gcnew StreamWriter( filename );

   // Create a PurchaseOrder and set its properties.
   PurchaseOrder^ po = gcnew PurchaseOrder;
   array<String^>^months = {"March","May","August"};
   po->Months = months;
   array<Item^>^items = {gcnew Item( "a1" ),gcnew NewItem( "b1","book" )};
   po->Items = items;
   array<Object^>^things = {"String",2003.31,gcnew NewItem( "Item100","book" )};
   po->Things = things;

   // Serialize the purchase order, and close the TextWriter.
   serializer->Serialize( writer, po );
   writer->Close();
}

void DeserializeObject( String^ filename )
{
   // Create an instance of the XmlSerializer class;
   // specify the type of object to be deserialized.
   XmlSerializer^ serializer = gcnew XmlSerializer( PurchaseOrder::typeid );

   // A FileStream is needed to read the XML document.
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );

   // Declare an object variable of the type to be deserialized.
   PurchaseOrder^ po;

   /* Use the Deserialize method to restore the object's state with
      data from the XML document. */
   po = safe_cast<PurchaseOrder^>(serializer->Deserialize( fs ));
   for ( int i = 0; i < po->Months->Length; ++i )
      Console::WriteLine( po->Months[ i ] );
   for ( int i = 0; i < po->Items->Length; ++i )
      Console::WriteLine( po->Items[ i ]->ItemID );
   for ( int i = 0; i < po->Things->Length; ++i )
      Console::WriteLine( po->Things[ i ] );
}

int main()
{
   // Read and write purchase orders.
   SerializeObject(  "ArrayItemEx.xml" );
   DeserializeObject(  "ArrayItemEx.xml" );
}
using System;
using System.Collections;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.Xml.Schema;
public class PurchaseOrder
{
   [XmlArrayItem(DataType = "gMonth", 
   ElementName="MyMonths",
   Namespace = "http://www.cohowinery.com")]
   public string[] Months;

   [XmlArrayItem(typeof(Item)), XmlArrayItem(typeof(NewItem))]
   public Item[] Items;

   [XmlArray(IsNullable = true)]
   [XmlArrayItem(typeof(string)), 
   XmlArrayItem(typeof(double)), 
   XmlArrayItem(typeof(NewItem))]
   public object[] Things;
   }

public class Item{
   public string ItemID;
   public Item(){}
   public Item(string id){
    ItemID = id;
   }
}
public class NewItem:Item{
   public string Category;
   public NewItem(){}
   public NewItem(string id, string cat){
    this.ItemID = id;
    Category = cat;
    }
}
 
public class Test
{
   public static void Main()
   {
      // Read and write purchase orders.
      Test t = new Test();
      t.SerializeObject("ArrayItemEx.xml");
      t.DeserializeObject("ArrayItemEx.xml");
   } 

   private void SerializeObject(string filename)
   {
      // Create an instance of the XmlSerializer class;
      // specify the type of object to serialize.
      XmlSerializer serializer = 
      new XmlSerializer(typeof(PurchaseOrder));
      TextWriter writer = new StreamWriter(filename);
      // Create a PurchaseOrder and set its properties.
      PurchaseOrder po=new PurchaseOrder();
      po.Months = new string[]{ "March", "May", "August"};
      po.Items= new Item[]{new Item("a1"), new NewItem("b1", "book")};
      po.Things= new object[] {"String", 2003.31, new NewItem("Item100", "book")};
      
      // Serialize the purchase order, and close the TextWriter.
      serializer.Serialize(writer, po);
      writer.Close();
   }
 
   protected void DeserializeObject(string filename)
   {
      // Create an instance of the XmlSerializer class;
      // specify the type of object to be deserialized.
      XmlSerializer serializer = new XmlSerializer(typeof(PurchaseOrder));
   
      // A FileStream is needed to read the XML document.
      FileStream fs = new FileStream(filename, FileMode.Open);
      // Declare an object variable of the type to be deserialized.
      PurchaseOrder po;
      /* Use the Deserialize method to restore the object's state with
      data from the XML document. */
      po = (PurchaseOrder) serializer.Deserialize(fs);
      foreach(string s in po.Months)
          Console.WriteLine(s);
      foreach(Item i in po.Items)
         Console.WriteLine(i.ItemID);
      foreach(object thing in po.Things)
         Console.WriteLine(thing); 
   } 
}
Imports System.Collections
Imports System.Xml
Imports System.Xml.Serialization
Imports System.IO
Imports System.Xml.Schema

Public Class PurchaseOrder
   <XmlArrayItem(DataType:= "gMonth", _
   ElementName:="MyMonths", _
   Namespace:= "http:'www.cohowinery.com")> _
   public Months() As String 

   <XmlArrayItem(GetType(Item)), XmlArrayItem(GetType(NewItem))> _
   public Items () As Item

   <XmlArray(IsNullable:= true), _
   XmlArrayItem(GetType(String)), _
   XmlArrayItem(GetType(double)), _
   XmlArrayItem(GetType(NewItem))> _
   public Things() As Object
End Class

Public Class Item
   public ItemID As String 

   public Sub New()
   End Sub
   
   public Sub New (id As String)
    ItemID = id
   End Sub
End Class

Public Class NewItem
   Inherits Item
   public Category As String 
   
   public Sub New()
      
   End Sub

   public Sub New(id As String , cat As String )
    me.ItemID = id
    Category = cat
   End Sub
End Class
 
Public Class Test
   Shared Sub Main()
      ' Read and write purchase orders.
      Dim t As Test = New Test()
      t.SerializeObject("ArrayItemExVB.xml")
      t.DeserializeObject("ArrayItemExVB.xml")
   End Sub 

   private Sub SerializeObject(filename As String)
      ' Create an instance of the XmlSerializer class
      ' specify the type of object to serialize.
      Dim serializer As XmlSerializer = _
      New XmlSerializer(GetType(PurchaseOrder))
      Dim writer As TextWriter = New StreamWriter(filename)
      ' Create a PurchaseOrder and set its properties.
      Dim po As PurchaseOrder =New PurchaseOrder()
      po.Months = New String() { "March", "May", "August"}
      po.Items= New Item(){New Item("a1"), New NewItem("b1", "book")}
      po.Things= New Object() {"String", 2003.31, New NewItem("Item100", "book")}
      
      ' Serialize the purchase order, and close the TextWriter.
      serializer.Serialize(writer, po)
      writer.Close()
   End Sub
 
   protected Sub DeserializeObject(filename As String)
      ' Create an instance of the XmlSerializer class
      ' specify the type of object to be deserialized.
      Dim serializer As XmlSerializer = _
      New XmlSerializer(GetType(PurchaseOrder))
   
      ' A FileStream is needed to read the XML document.
      Dim fs As FileStream = New FileStream(filename, FileMode.Open)
      ' Declare an object variable of the type to be deserialized.
      Dim po As PurchaseOrder 
      ' Use the Deserialize method to restore the object's state with
      ' data from the XML document. 
      po = CType( serializer.Deserialize(fs), PurchaseOrder)
      Dim s As String
      Dim i As Item
      Dim thing As Object
      for each s in po.Months
          Console.WriteLine(s)
      Next 
      
      for each i in po.Items
         Console.WriteLine(i.ItemID)
      Next 
      
      for each thing in po.Things
         Console.WriteLine(thing) 
      Next
   End Sub
End Class

Açıklamalar

Aşağıdaki tabloda XML Şeması basit veri türleri .NET eşdeğerleriyle listelenmiştir.

XML Şeması base64Binary ve hexBinary veri türleri için bir nesne dizisi Byte kullanın ve özelliği uygun şekilde "base64Binary" veya "hexBinary" olarak ayarlanmış bir XmlArrayItemAttribute DataType uygulayın. XML Şeması time ve date veri türleri için türünü kullanın DateTime ve "tarih" veya "saat" olarak ayarlanmış olarak DataType öğesini uygulayınXmlArrayItemAttribute.

Bir dizeye eşlenen her XML Şeması türü için, özelliğini XML Şema türüne ayarlanmış olarak uygulayın XmlArrayItemAttribute DataType . Ancak bu, serileştirme biçimini değiştirmez, yalnızca üyenin şemasını değiştirir.

Not

özelliği büyük/küçük harfe duyarlıdır, bu nedenle xml şeması veri türlerinden birine tam olarak ayarlamanız gerekir.

Not

İkili verileri XML öğesi olarak geçirmek daha verimlidir ve sonra bunu xml özniteliği olarak geçirir.

XML Şeması veri türleri hakkında daha fazla bilgi için Bkz. World Wide Web Consortium belgesi XML Şema Bölüm 2: Veri Türleri.

XSD veri türü .NET veri türü
Anyurı String
base64Binary Nesne dizisi Byte
boolean Boolean
byte SByte
date DateTime
tarih saat DateTime
decimal Decimal
double Double
VARLIK String
VARLIK String
float Single
gDay String
gMonth String
gMonthDay String
gYear String
gYearMonth String
Hexbinary Nesne dizisi Byte
ID String
IDREF String
IDREFS String
int Int32
tamsayı String
language String
long Int64
Name String
Ncname String
negativeInteger String
NMTOKEN String
NMTOKENS String
normalizedString String
nonNegativeInteger String
nonPositiveInteger String
GÖSTERİMİ String
positiveInteger String
QName XmlQualifiedName
süre String
string String
short Int16
time DateTime
token String
unsignedByte Byte
Unsignedınt UInt32
unsignedLong UInt64
unsignedShort UInt16

Şunlara uygulanır