Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment mettre en forme et mettre en forme DateTime
des valeurs de DataTable
colonnes dans le code XML extrait d’un objet ADO.NET DataSet
Date
.
Version du produit d’origine : Visual Basic .NET
Numéro de base de connaissances d’origine : 811767
Résumé
Dans ADO.NET, les DateTime
valeurs et Date
valeurs des DataTable
colonnes sont écrites dans le XSD DateTime
et Date
les formats lorsque l’objet DataSet
est enregistré au format XML. Les formats XSD et XSD DateTime
standard sont CCYY-MM-DDThh :mm :ss et CCYY-MM-DD, respectivement, car le schéma XSD sous-jacent des mappages et Date
DateTime
colonnes de DataSet
la base de données aux DateTime
types de données XSD et XSDDate
.Date
Pour générer des données XML où DateTime
et Date
des valeurs sont représentées dans les formats personnalisés requis, utilisez l’une des méthodes suivantes.
Méthode 1 : Utiliser la classe XmlConvert
Ouvrez Microsoft Visual Studio .NET. Dans Visual Basic .NET, créez un projet d’application web ASP.NET nommé DateTimeXmlConvert.
Cliquez avec le bouton droit sur l’aire du concepteur de WebForm1.aspx, puis cliquez sur Afficher le code.
Ajoutez le code suivant à la section fin des
Imports
directives dans WebForm1.aspx.vb :Imports System.Xml Imports System.Text Imports System.Data.SqlClient
Collez le code suivant dans l’événement
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()
Enregistrez les modifications apportées à WebForm1.aspx.vb.
Dans le menu Générer , cliquez sur Générer la solution.
Démarrez Microsoft Internet Explorer et ouvrez WebForm1.aspx en spécifiant l’URL
http://IISServerName/DateTimeXmlConvert/WebForm1.aspx
, où IISServerName est le nom de votre serveur Microsoft Internet Information Services (IIS).
Vous pouvez maintenant voir que le fichier XML affiché dans le navigateur s’affiche au format personnalisé DateTime
.
Méthode 2 : Appliquer une transformation XSLT sur la représentation XML des données DataSet
Vous pouvez utiliser des blocs de script inline et des composants de code externe, appelés objets d’extension XSLT, pour implémenter des routines personnalisées. Celles-ci sont appelées pendant un XSLT pour effectuer des calculs et traiter des données. Microsoft vous recommande d’éviter d’utiliser des blocs de script inline. Vous pouvez utiliser des objets d’extension pour implémenter des routines personnalisées lorsque vous concevez des feuilles de style XSLT portables.
Créer un formulaire web ASP.NET
Créez un projet d’application web Visual Basic .NET ASP.NET nommé DateTimeXSLT.
Ajoutez une nouvelle classe nommée DateConvertor.vb au projet.
Remplacez le code existant par le code suivant dans la
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
Enregistrez les modifications apportées à DateConvertor.vb.
Cliquez avec le bouton droit sur l’aire du concepteur de WebForm1.aspx, puis cliquez sur Afficher le code.
Ajoutez le code suivant à la section fin des
Imports
directives dans WebForm1.aspx.vb :Imports System.IO Imports System.Xml Imports System.Xml.Xsl Imports System.Xml.XPath Imports System.Data.SqlClient
Collez le code suivant dans l’événement
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)
Enregistrez les modifications apportées à WebForm1.aspx.vb.
Créer un exemple de document XSLT
Ajoutez un nouveau fichier XSLT nommé DateTime.xslt au projet Web DateTimeXSLT ASP.NET.
Remplacez le code généré par le code suivant. (Utilisez le Bloc-notes comme outil intermédiaire si vous rencontrez des problèmes d’encodage ou de caractère lorsque vous essayez de coller le code suivant.)
<?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>
Enregistrez les modifications apportées à DateTime.xslt.
Tester la transformation XSLT à l’aide du formulaire web ASP.NET
- Enregistrez les modifications apportées au projet web DateTimeXSLT ASP.NET.
- Dans le menu Générer , cliquez sur Générer la solution.
- Démarrez Internet Explorer et ouvrez WebForm1.aspx en spécifiant l’URL
http://IISServerName/DateTimeXSLT/WebForm1.aspx
, où IISServerName est le nom de votre serveur IIS.
Vous pouvez maintenant voir que deux DateTime
formats, le DateTime
format de DataSet et le format transformé DateTime
sur la page WebForm1.aspx .