XmlArrayItemAttribute.DataType Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta il tipo di dati XML dell'elemento XML generato.
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
Valore della proprietà
Tipo di dati XSD (XML Schema Definition).
Esempio
Nell'esempio seguente viene serializzata una classe denominata PurchaseOrder. Diverse istanze della XmlArrayItemAttribute classe vengono applicate a tre membri e la DataType proprietà per ogni istanza viene impostata su un tipo consentito nella matrice.
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
Commenti
Nella tabella seguente sono elencati i tipi di dati semplici di XML Schema con i relativi equivalenti .NET.
Per i tipi di dati e hexBinary schema XMLbase64Binary, utilizzare una matrice di Byte oggetti e applicare un oggetto XmlArrayItemAttribute con la DataType proprietà impostata su "base64Binary" o "hexBinary", in base alle esigenze. Per xml Schema time e date tipi di dati, utilizzare il DateTime tipo e applicare XmlArrayItemAttribute con il DataType valore impostato su "date" o "time".
Per ogni tipo di XML Schema mappato a una stringa, applicare con XmlArrayItemAttribute la relativa DataType proprietà impostata sul tipo di XML Schema. Tuttavia, questo non modifica il formato di serializzazione, ma solo lo schema per il membro.
Annotazioni
La proprietà fa distinzione tra maiuscole e minuscole, pertanto è necessario impostarla esattamente su uno dei tipi di dati XML Schema.
Annotazioni
Il passaggio di dati binari come elemento XML è più efficiente e quindi passarlo come attributo XML.
Per altre informazioni sui tipi di dati xml Schema, vedere il documento World Wide Web Consortium XML Schema Part 2: Datatypes.
| Tipo di dati XSD | Tipo di dati .NET |
|---|---|
| anyURI | String |
| base64Binary | Matrice di Byte oggetti |
| boolean | Boolean |
| byte | SByte |
| date | DateTime |
| data e ora | DateTime |
| decimale | Decimal |
| doppio | Double |
| ENTITÀ | String |
| ENTITÀ | String |
| galleggiare | Single |
| gDay | String |
| gMonth | String |
| gMonthDay | String |
| gYear | String |
| AnnoMese | String |
| Hexbinary | Matrice di Byte oggetti |
| Documento d'identità | String |
| IDREF | String |
| IDREFS | String |
| int | Int32 |
| numero intero | String |
| language | String |
| lungo | Int64 |
| Nome | String |
| Ncname | String |
| negativeInteger | String |
| NMTOKEN | String |
| NMTOKENS | String |
| normalizedString | String |
| nonNegativeInteger | String |
| nonPositiveInteger | String |
| NOTAZIONE | String |
| positiveInteger | String |
| QName | XmlQualifiedName |
| duration | String |
| string | String |
| short | Int16 |
| Tempo | DateTime |
| token | String |
| byte senza segno | Byte |
| intero non firmato | UInt32 |
| intero lungo non firmato | UInt64 |
| unsignedShort (numero breve senza segno) | UInt16 |