Condividi tramite


XmlTextAttribute.DataType Proprietà

Definizione

Ottiene o imposta il tipo di dati XSD (XML Schema Definition Language) del testo generato dalla classe XmlSerializer.

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 XML Schema (XSD).

Eccezioni

Non è possibile eseguire il mapping del tipo di dati XML Schema al tipo di dati .NET.

Il tipo di dati XML Schema specificato non è valido per la proprietà e non può essere convertito nel tipo di membro.

Esempio

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::Xml::Serialization;
using namespace System::IO;

public ref class Group1
{
public:

   // The XmlTextAttribute with type set to string informs the 
   // XmlSerializer that strings should be serialized as XML text.

   [XmlText(String::typeid)]
   [XmlElement(Int32::typeid)]
   [XmlElement(Double::typeid)]
   array<Object^>^All;
   Group1()
   {
      array<Object^>^temp = {321,"One",2,3.0,"Two"};
      All = temp;
   }
};

public enum class GroupType
{
   Small, Medium, Large
};

public ref class Group2
{
public:

   [XmlText(Type=GroupType::typeid)]
   GroupType Type;
};

public ref class Group3
{
public:

   [XmlText(Type=DateTime::typeid)]
   DateTime CreationTime;
   Group3()
   {
      CreationTime = DateTime::Now;
   }
};

public ref class Test
{
public:
   static void main()
   {
      Test^ t = gcnew Test;
      t->SerializeArray( "XmlText1.xml" );
      t->SerializeEnum( "XmlText2.xml" );
      t->SerializeDateTime( "XmlText3.xml" );
   }

private:
   void SerializeArray( String^ filename )
   {
      XmlSerializer^ ser = gcnew XmlSerializer( Group1::typeid );
      Group1^ myGroup1 = gcnew Group1;
      TextWriter^ writer = gcnew StreamWriter( filename );
      ser->Serialize( writer, myGroup1 );
      writer->Close();
   }

   void SerializeEnum( String^ filename )
   {
      XmlSerializer^ ser = gcnew XmlSerializer( Group2::typeid );
      Group2^ myGroup = gcnew Group2;
      myGroup->Type = GroupType::Medium;
      TextWriter^ writer = gcnew StreamWriter( filename );
      ser->Serialize( writer, myGroup );
      writer->Close();
   }

   void SerializeDateTime( String^ filename )
   {
      XmlSerializer^ ser = gcnew XmlSerializer( Group3::typeid );
      Group3^ myGroup = gcnew Group3;
      TextWriter^ writer = gcnew StreamWriter( filename );
      ser->Serialize( writer, myGroup );
      writer->Close();
   }
};

int main()
{
   Test::main();
}
using System;
using System.Xml.Serialization;
using System.IO;

public class Group1{
   // The XmlTextAttribute with type set to string informs the
   // XmlSerializer that strings should be serialized as XML text.
   [XmlText(typeof(string))]
   [XmlElement(typeof(int))]
   [XmlElement(typeof(double))]
   public object [] All= new object []{321, "One", 2, 3.0, "Two" };
}

public class Group2{
   [XmlText(Type = typeof(GroupType))]
   public GroupType Type;
}
public enum GroupType{
   Small,
   Medium,
   Large
}

public class Group3{
   [XmlText(Type=typeof(DateTime))]
   public DateTime CreationTime = DateTime.Now;
}

public class Test{
   static void Main(){
      Test t = new Test();
      t.SerializeArray("XmlText1.xml");
      t.SerializeEnum("XmlText2.xml");
      t.SerializeDateTime("XmlText3.xml");
   }

   private void SerializeArray(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group1));
      Group1 myGroup1 = new Group1();

      TextWriter writer = new StreamWriter(filename);

      ser.Serialize(writer, myGroup1);
      writer.Close();
   }

   private void SerializeEnum(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group2));
      Group2 myGroup = new Group2();
      myGroup.Type = GroupType.Medium;
      TextWriter writer = new StreamWriter(filename);

      ser.Serialize(writer, myGroup);
      writer.Close();
   }

   private void SerializeDateTime(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group3));
      Group3 myGroup = new Group3();
      TextWriter writer = new StreamWriter(filename);

      ser.Serialize(writer, myGroup);
      writer.Close();
   }
}
Imports System.Xml.Serialization
Imports System.IO


Public Class Group1
   ' The XmlTextAttribute with type set to String informs the 
   ' XmlSerializer that strings should be serialized as XML text.
   <XmlText(GetType(String)), _
   XmlElement(GetType(integer)), _  
   XmlElement(GetType(double))> _
   public All () As Object = _
   New Object (){321, "One", 2, 3.0, "Two" }
End Class


Public Class Group2
   <XmlText(GetType(GroupType))> _
   public Type As GroupType 
End Class

Public Enum GroupType
   Small
   Medium
   Large
End Enum

Public Class Group3
   <XmlText(GetType(DateTime))> _
   Public CreationTime As DateTime = DateTime.Now
End Class

Public Class Test
   Shared Sub Main()
      Dim t As Test = New Test()
      t.SerializeArray("XmlText1.xml")
      t.SerializeEnum("XmlText2.xml")
      t.SerializeDateTime("XmlText3.xml")
   End Sub

   Private Sub SerializeArray(filename As String)
      Dim ser As XmlSerializer = New XmlSerializer(GetType(Group1))
      Dim myGroup1 As Group1 = New Group1()

      Dim writer As TextWriter = New StreamWriter(filename)

      ser.Serialize(writer, myGroup1)
      writer.Close()
   End Sub

   Private Sub SerializeEnum(filename As String)
      Dim ser As XmlSerializer = New XmlSerializer(GetType(Group2))
      Dim myGroup As Group2 = New Group2()
      myGroup.Type = GroupType.Medium
      Dim writer As TextWriter = New StreamWriter(filename)

      ser.Serialize(writer, myGroup)
      writer.Close()
   End Sub

   Private Sub SerializeDateTime(filename As String)
      Dim ser As XmlSerializer = new XmlSerializer(GetType(Group3))
      Dim myGroup As Group3 = new Group3()
      Dim writer As TextWriter = new StreamWriter(filename)

      ser.Serialize(writer, myGroup)
      writer.Close()
   End Sub
End Class

Commenti

L'impostazione della DataType proprietà su un tipo di dati semplice xml Schema influisce sul formato del codice XML generato. Ad esempio, l'impostazione della proprietà su "date" causa la formattazione del testo generato nello stile di data generale, ad esempio: 2001-08-31. Al contrario, impostando la proprietà su "dateTime" viene restituito un istante specifico definito dall'Organizzazione internazionale per la standardizzazione documento 8601, "Rappresentazioni di date e ore", ad esempio: 2001-08-15T06:59:11.0508456-07:00.

L'effetto dell'impostazione della DataType proprietà può essere visto anche quando si usa lo strumento di definizione xml Schema (Xsd.exe) per generare lo schema XML per un file compilato. Per altre informazioni sull'uso dello strumento, vedere Strumento di definizione xml Schema e serializzazione XML.

Nella tabella seguente sono elencati i tipi di dati semplici di XML Schema con gli equivalenti .NET.

Per i tipi di dati e XML Schemabase64Binary, usare una matrice di Byte strutture e applicare un XmlTextAttribute oggetto con il DataType set su "base64Binary" o "hexBinary", come hexBinary appropriato. Per i tipi di dati e date XML Schematime, usare il DateTime tipo e applicare l'oggetto con il XmlTextAttributeDataType set su "date" o "time".

Per ogni tipo di dati XML Schema mappato a una stringa, applicare l'oggetto con la XmlTextAttribute relativa DataType proprietà impostata sul tipo di dati XML Schema. Si noti che questo non modifica il formato di serializzazione, solo lo schema per il membro.

Nota

La proprietà è distinzione tra maiuscole e minuscole, quindi è necessario impostarla esattamente su uno dei tipi di dati XML Schema.

Nota

Il passaggio di dati binari come elemento XML è più efficiente rispetto al passaggio come attributo XML.

Per altre informazioni sui tipi di dati XML Schema, vedere il documento World Wide Web Consortium denominato XML Schema Part 2: Datatypes.

Tipo di dati XSD Tipo di dati .NET
anyURI String
base64Binary Matrice di Byte oggetti
boolean Boolean
byte SByte
Data DateTime
dateTime DateTime
decimal Decimal
double Double
ENTITY String
ENTITÀ String
float Single
gDay String
gMonth String
gMonthDay String
gYear String
gYearMonth String
Hexbinary Matrice di Byte oggetti
ID String
IDREF String
IDREFS String
INT Int32
numero intero String
Linguaggio String
long Int64
Nome String
NCName String
negativeInteger String
NMTOKEN String
NMTOKENS String
normalizedString String
nonNegativeInteger String
nonPositiveInteger String
NOTATION String
positiveInteger String
QName XmlQualifiedName
duration String
string String
short Int16
time DateTime
token String
unsignedByte Byte
unsignedInt UInt32
unsignedLong UInt64
unsignedShort UInt16

Si applica a