Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come formattare DateTime
e Date
i valori delle DataTable
colonne nel codice XML estratto da un oggetto ADO.NET DataSet
.
Versione originale del prodotto: Visual Basic .NET
Numero KB originale: 811767
Riepilogo
In ADO.NET, i DateTime
valori e Date
delle DataTable
colonne vengono scritti nei formati XSD DateTime
e Date
quando viene DataSet
salvato come XML. I formati XSD DateTime
e Date
STANDARD sono rispettivamente CCYY-MM-DDThh:mm:ss e CCYY-MM-DD, perché lo schema XSD sottostante dei database esegue il mapping delle DataSet
DateTime
colonne e Date
del database ai DateTime
tipi di dati XSD Date
e .
Per generare codice XML in cui DateTime
i valori e Date
sono rappresentati nei formati personalizzati richiesti, utilizzare uno dei metodi seguenti.
Metodo 1: Usare la classe XmlConvert
Aprire Microsoft Visual Studio .NET. In Visual Basic .NET creare un nuovo progetto di applicazione Web ASP.NET denominato DateTimeXmlConvert.
Fare clic con il pulsante destro del mouse sull'area di progettazione di WebForm1.aspx e quindi scegliere Visualizza codice.
Aggiungere il codice seguente alla sezione fine delle
Imports
direttive in WebForm1.aspx.vb:Imports System.Xml Imports System.Text Imports System.Data.SqlClient
Incollare il codice seguente nell'evento
Page_Load
:' Change SqlServerName, UserId and Password in the following connection string. Dim conn As String = "Server=<SQLServerName>; database=Northwind; user id=<UserID>; password=<Password>;" Dim connection As SqlConnection = New SqlConnection() connection.ConnectionString = conn Dim objDataSet As DataSet = New DataSet() Dim objAdapter As SqlDataAdapter = New SqlDataAdapter() Dim objCmd As SqlCommand = New SqlCommand()' Retrieve the first 10 records from the employees table. objCmd.CommandText = "select top 10 FirstName,BirthDate from employees" objCmd.Connection = connection objAdapter.SelectCommand = objCmd objAdapter.Fill(objDataSet) connection.Close()' Create an instance of XmlTextReader class that reads the XML data. Dim xmlReader As XmlTextReader = New XmlTextReader(objDataSet.GetXml(),XmlNodeType.Element,Nothing) Response.ContentType = "text/xml" Dim xmlWriter As XmlTextWriter = New XmlTextWriter(Response.OutputStream,Encoding.UTF8) xmlWriter.Indentation = 4 xmlWriter.WriteStartDocument() Dim elementName As String = "" ' Parse & display each node While xmlReader.Read() Select Case xmlReader.NodeType Case XmlNodeType.Element xmlWriter.WriteStartElement(xmlReader.Name) elementName = xmlReader.Name Case XmlNodeType.Text If elementName.ToLower() = "birthdate" Then xmlWriter.WriteString(XmlConvert.ToDateTime(xmlReader.Value).ToString()) Else xmlWriter.WriteString(xmlReader.Value) End If Case XmlNodeType.EndElement xmlWriter.WriteEndElement() End Select End While xmlWriter.Close()
Salvare le modifiche apportate a WebForm1.aspx.vb.
Nel menu Compila scegliere Compila soluzione.
Avviare Microsoft Internet Explorer e aprire WebForm1.aspx specificando l'URL
http://IISServerName/DateTimeXmlConvert/WebForm1.aspx
, dove IISServerName è il nome del server Microsoft Internet Information Services (IIS).
È ora possibile vedere che il file XML di cui viene eseguito il rendering nel browser viene visualizzato in formato personalizzato DateTime
.
Metodo 2: Applicare una trasformazione XSLT nella rappresentazione XML dei dati di DataSet
È possibile usare blocchi di script inline e componenti di codice esterni, noti come oggetti estensione XSLT, per implementare routine personalizzate. Questi vengono richiamati durante un xsLT per eseguire calcoli ed elaborare i dati. Microsoft consiglia di evitare di usare blocchi di script inline. È possibile utilizzare oggetti di estensione per implementare routine personalizzate quando si progettano fogli di stile XSLT portabili.
Creare un modulo Web ASP.NET
Creare un nuovo progetto di applicazione Web visual Basic .NET ASP.NET denominato DateTimeXSLT.
Aggiungere una nuova classe denominata DateConvertor.vb al progetto.
Sostituire il codice esistente con il codice seguente nella
DateConvertor
classe :Public Class DateConvertor Public Function GetDateTime(ByVal data As String, ByVal format As String) As String Dim dt As DateTime = DateTime.Parse(data) Return dt.ToString(format) End Function End Class
Salvare le modifiche apportate a DateConvertor.vb.
Fare clic con il pulsante destro del mouse sull'area di progettazione di WebForm1.aspx e quindi scegliere Visualizza codice.
Aggiungere il codice seguente alla sezione fine delle
Imports
direttive in WebForm1.aspx.vb:Imports System.IO Imports System.Xml Imports System.Xml.Xsl Imports System.Xml.XPath Imports System.Data.SqlClient
Incollare il codice seguente nell'evento
Page_Load
:' Change SqlServerName, UserId and Password in the following connection string. Dim strConn As String = "Server=<SQLServerName>; database=Northwind; user id=<UserID>; password=<Password>;" Dim connection As SqlConnection = New SqlConnection() connection.ConnectionString = strConn Dim objDataSet As DataSet = New DataSet() Dim objAdapter As SqlDataAdapter = New SqlDataAdapter() Dim objCmd As SqlCommand = New SqlCommand()' Retrieve all records from employees table. objCmd.CommandText = "select FirstName,BirthDate from employees" objCmd.Connection = connection objAdapter.SelectCommand = objCmd objAdapter.Fill(objDataSet) connection.Close()' Create an instance of StringReader class that reads the XML data. Dim reader As StringReader = New StringReader(objDataSet.GetXml()) Dim doc As XPathDocument = New XPathDocument(reader)' Create an XslTransform object and load xslt file. Dim transform As XslTransform = New XslTransform() transform.Load(Me.MapPath("DateTime.xslt"))'Add an object to convert DateTime format. Dim objDateConvertor As DateConvertor = New DateConvertor() Dim args As XsltArgumentList = New XsltArgumentList() args.AddExtensionObject("urn:ms-kb", objDateConvertor) transform.Transform(doc, args, Response.OutputStream)
Salvare le modifiche apportate a WebForm1.aspx.vb.
Creare un documento XSLT di esempio
Aggiungere un nuovo file XSLT denominato DateTime.xslt al progetto Web DateTimeXSLT ASP.NET.
Sostituire il codice generato con il codice seguente. Usare il Blocco note come strumento intermedio se si verificano problemi di codifica o di caratteri quando si tenta di incollare il codice seguente.
<?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myObj="urn:ms-kb"> <xsl:template match="NewDataSet"> <table> <xsl:attribute name="border">1</xsl:attribute> <TR> <TD>Employee name</TD> <TD>Original DateTime Format</TD> <TD>Changed DateTime Format</TD> </TR> <xsl:apply-templates select="*"/> </table> </xsl:template> <xsl:template match="*"> <TR> <xsl:apply-templates select="*"/> </TR> </xsl:template> <xsl:template match="FirstName"> <TD> <xsl:value-of select="."/> </TD> </xsl:template> <xsl:template match="BirthDate"> <xsl:variable name="Date" select="."/> <TD> <xsl:value-of select="$Date"/> </TD> <TD> <xsl:value-of select="myObj:GetDateTime($Date, 'F')"/> </TD> </xsl:template> </xsl:stylesheet>
Salvare le modifiche apportate a DateTime.xslt.
Testare la trasformazione XSLT usando il modulo Web ASP.NET
- Salvare le modifiche apportate al progetto Web DateTimeXSLT ASP.NET.
- Nel menu Compila scegliere Compila soluzione.
- Avviare Internet Explorer e aprire WebForm1.aspx specificando l'URL
http://IISServerName/DateTimeXSLT/WebForm1.aspx
, dove IISServerName è il nome del server IIS.
È ora possibile vedere che due DateTime
formati, il DateTime
formato di DataSet e il formato trasformato DateTime
nella pagina WebForm1.aspx .