XmlArrayItemAttribute.DataType Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define o tipo de dados XML do elemento XML gerado.
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
Valor da propriedade
Um tipo de dados XSD (definição de esquema XML).
Exemplos
O exemplo a seguir serializa uma classe chamada PurchaseOrder. Várias instâncias da XmlArrayItemAttribute classe são aplicadas a três membros e a DataType propriedade de cada instância é definida como um tipo permitido na matriz.
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
Comentários
A tabela a seguir lista os tipos de dados simples do Esquema XML com seus equivalentes do .NET.
Para os tipos de dados e hexBinary esquema base64Binary XML, use uma matriz de Byte objetos e aplique um XmlArrayItemAttribute com a DataType propriedade definida como "base64Binary" ou "hexBinary", conforme apropriado. Para os tipos de dados e esquema time XML, use o DateTime tipo e aplique o XmlArrayItemAttribute com o DataType conjunto como "date" ou "timedate".
Para cada tipo de esquema XML mapeado para uma cadeia de caracteres, aplique a XmlArrayItemAttribute propriedade com sua DataType propriedade definida ao tipo de esquema XML. No entanto, isso não altera o formato de serialização, apenas o esquema para o membro.
Observação
A propriedade diferencia maiúsculas de minúsculas, portanto, você deve defini-la exatamente como um dos tipos de dados de esquema XML.
Observação
Passar dados binários como um elemento XML é mais eficiente do que passá-los como um atributo XML.
Para obter mais informações sobre tipos de dados de esquema XML, consulte o documento XML do World Wide Web Consortium parte 2: tipos de dados.
| Tipo de dados XSD | Tipo de dados do .NET |
|---|---|
| Anyuri | String |
| Base64binary | Matriz de Byte objetos |
| boolean | Boolean |
| byte | SByte |
| date | DateTime |
| data e hora | DateTime |
| decimal | Decimal |
| duplo | Double |
| ENTIDADE | String |
| ENTIDADES | String |
| derivar | Single |
| Gday | String |
| gMonth | String |
| Gmonthday | String |
| gYear | String |
| gYearMonth | String |
| Hexbinary | Matriz de Byte objetos |
| ID | String |
| IDREF | String |
| IDREFS | String |
| int | Int32 |
| inteiro | String |
| linguagem | String |
| long | Int64 |
| Nome | String |
| Ncname | String |
| negativeInteger | String |
| NMTOKEN | String |
| NMTOKENS | String |
| normalizedString | String |
| nonNegativeInteger | String |
| nonPositiveInteger | String |
| NOTAÇÃO | String |
| positiveInteger | String |
| QName | XmlQualifiedName |
| duração | String |
| cadeia | String |
| short | Int16 |
| time | DateTime |
| símbolo | String |
| byte sem sinal | Byte |
| inteiroSemSinal | UInt32 |
| unsignedLong | UInt64 |
| inteiro sem sinal (unsignedShort) | UInt16 |