XmlArrayItemAttribute.DataType 属性     
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置生成的 XML 元素的 XML 数据类型。
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
	属性值
(XSD) 数据类型的 XML 架构定义。
示例
The following example serializes a class named PurchaseOrder. 类的 XmlArrayItemAttribute 多个实例应用于三个成员,每个 DataType 实例的属性设置为数组中允许的类型。
#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
	注解
下表列出了 XML 架构简单数据类型及其 .NET 等效项。
对于 XML 架构base64Binary和hexBinary数据类型,请使用对象的数组Byte,并根据需要将属性设置为“base64Binary”或“hexBinary”应用XmlArrayItemAttributeDataType该属性。 对于 XML 架构time和date数据类型,请使用该DateTime类型,并将集DataType应用于XmlArrayItemAttribute“date”或“time”。
对于映射到字符串的每个 XML 架构类型,请 XmlArrayItemAttribute 将其 DataType 属性设置为 XML 架构类型。 但是,这不会更改序列化格式,仅更改成员的架构。
备注
该属性区分大小写,因此必须将其完全设置为 XML 架构数据类型之一。
备注
将二进制数据作为 XML 元素传递效率更高,然后将其作为 XML 属性传递。
有关 XML 架构数据类型的详细信息,请参阅万维网联盟文档 XML 架构第 2 部分:数据类型。
| XSD 数据类型 | .NET 数据类型 | 
|---|---|
| anyURI | String | 
| base64Binary | Byte 对象的数组 | 
| boolean | Boolean | 
| 字节 | SByte | 
| 日期 | DateTime | 
| dateTime | DateTime | 
| Decimal | Decimal | 
| Double | Double | 
| ENTITY | String | 
| 实体 | String | 
| FLOAT | Single | 
| gDay | String | 
| gMonth | String | 
| gMonthDay | String | 
| gYear | String | 
| gYearMonth | String | 
| hexBinary | Byte 对象的数组 | 
| ID | String | 
| IDREF | String | 
| IDREFS | String | 
| int | Int32 | 
| 整型 | String | 
| 语言 | String | 
| long | Int64 | 
| “属性” | String | 
| NCName | String | 
| negativeInteger | String | 
| NMTOKEN | String | 
| NMTOKENS | String | 
| normalizedString | String | 
| nonNegativeInteger | String | 
| nonPositiveInteger | String | 
| NOTATION | String | 
| positiveInteger | String | 
| QName | XmlQualifiedName | 
| duration | String | 
| 字符串 | String | 
| short | Int16 | 
| time | DateTime | 
| 令牌 | String | 
| unsignedByte | Byte | 
| unsignedInt | UInt32 | 
| unsignedLong | UInt64 | 
| unsignedShort | UInt16 |