XmlArrayItemAttribute.DataType Egenskap

Definition

Hämtar eller anger XML-datatypen för det genererade XML-elementet.

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

Egenskapsvärde

En XML-schemadefinition (XSD) datatyp.

Exempel

I följande exempel serialiseras en klass med namnet PurchaseOrder. Flera instanser av XmlArrayItemAttribute klassen tillämpas på tre medlemmar och DataType egenskapen för varje instans är inställd på en typ som tillåts i matrisen.

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

Kommentarer

I följande tabell visas enkla XML-schemadatatyper med deras .NET motsvarigheter.

För XML-schema base64Binary och hexBinary datatyper använder du en matris med Byte objekt och tillämpar en XmlArrayItemAttribute med DataType egenskapen inställd på "base64Binary" eller "hexBinary" efter behov. För XML-schema och timedate datatyper använder du DateTime typen och använder XmlArrayItemAttribute med DataType inställningen "datum" eller "tid".

För varje XML-schematyp som mappas till en sträng tillämpar du XmlArrayItemAttribute med dess DataType egenskap inställd på XML-schematypen. Detta ändrar dock inte serialiseringsformatet, bara schemat för medlemmen.

Note

Egenskapen är skiftlägeskänslig, så du måste ange den exakt till en av XML-schemadatatyperna.

Note

Att skicka binära data som ett XML-element är effektivare och skickar dem sedan som ett XML-attribut.

Mer information om XML-schemadatatyper finns i DOKUMENTET XML-schema för world wide web consortium del 2: Datatyper.

XSD-datatyp .NET-datatyp
anyURI String
base64Binary Matris med Byte objekt
boolean Boolean
byte SByte
date DateTime
datumtid DateTime
decimal Decimal
dubbel Double
ENHET String
ENHETER String
flyta/sväva Single
gDay String
gMonth String
gMonthDay String
gYear String
gYearMonth String
hexBinary Matris med Byte objekt
ID String
IDREF String
IDREFS String
int Int32
integer String
language String
long Int64
Name String
NCName String
negativeInteger String
NMTOKEN String
NMTOKENS String
normalizedString String
nonNegativeInteger String
nonPositiveInteger String
NOTATION String
positiveInteger String
QName XmlQualifiedName
duration String
snöre String
kort Int16
time DateTime
Token String
osignerad byte Byte
osigneradInt UInt32
unsignedLong UInt64
osignerad kort UInt16

Gäller för