İngilizce dilinde oku

Aracılığıyla paylaş


Visual Basic .NET kullanarak bir ADO.NET DataSet'ten ayıklanan XML'de DateTime ve Date değerlerini biçimlendirme

Bu makalede, bir ADO.NET DataSet nesnesinden ayıklanan XML'deki sütunların nasıl biçimlendirileceğini DateTime ve Date değerlerinin DataTable nasıl biçimlendirileceğini açıklanmaktadır.

Özgün ürün sürümü: Visual Basic .NET
Özgün KB numarası: 811767

Özet

ADO.NET sütunlarının DateTime ve Date değerleri DataTable XSD'de DateTime yazılır ve Date XML olarak kaydedildiğinde DataSet biçimlendirilir. Standart XSD DateTime ve Date biçimler sırasıyla CCYY-MM-DDThh:mm:ss ve CCYY-MM-DD'dir, çünkü veritabanının DataSet temel XSD şeması veritabanının ve Date sütunlarını ve XSD Date veri türlerine DateTime eşlerDateTime.

Ve değerlerinin gerekli özel biçimlerde temsil edildiği XML DateTimeDate oluşturmak için aşağıdaki yöntemlerden birini kullanın.

Yöntem 1: XmlConvert sınıfını kullanma

  1. Microsoft Visual Studio .NET'i açın. Visual Basic .NET'te DateTimeXmlConvert adlı yeni bir ASP.NET web uygulaması projesi oluşturun.

  2. WebForm1.aspx'nin tasarımcı yüzeyine sağ tıklayın ve ardından Kodu Görüntüle'ye tıklayın.

  3. WebForm1.aspx.vb yönergelerinin Importssonuna aşağıdaki kodu ekleyin:

    VB
    Imports System.Xml
    Imports System.Text
    Imports System.Data.SqlClient
    
  4. Olaya aşağıdaki kodu yapıştırın Page_Load :

    VB
    ' 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()
    
  5. değişiklikleri WebForm1.aspx.vb kaydedin.

  6. Yapı menüsünde Yapı Çözümü’ne tıklayın.

  7. Microsoft Internet Explorer'ı başlatın ve URL'yi belirterek http://IISServerName/DateTimeXmlConvert/WebForm1.aspx WebForm1.aspx açın; burada IISServerName, Microsoft Internet Information Services (IIS) sunucunuzun adıdır.

Artık tarayıcıda işlenen XML dosyasının özel DateTime biçimde görüntülendiğini görebilirsiniz.

Yöntem 2: DataSet verilerinin XML gösterimine XSLT dönüşümü uygulama

Özel yordamları uygulamak için satır içi betik bloklarını ve XSLT Uzantısı nesneleri olarak bilinen dış kod bileşenlerini kullanabilirsiniz. Hesaplamalar yapmak ve verileri işlemek için XSLT sırasında bunlar çağrılır. Microsoft, satır içi betik bloklarını kullanmaktan kaçınmanızı önerir. Taşınabilir XSLT stil sayfaları tasarlarken özel yordamlar uygulamak için uzantı nesnelerini kullanabilirsiniz.

ASP.NET web formu oluşturma

  1. DateTimeXSLT adlı yeni bir Visual Basic .NET ASP.NET Web uygulaması projesi oluşturun.

  2. Projeye DateConvertor.vb adlı yeni bir sınıf ekleyin.

  3. Mevcut kodu sınıfında aşağıdaki kodla DateConvertor değiştirin:

    VB
    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
    
  4. değişiklikleri DateConvertor.vb kaydedin.

  5. WebForm1.aspx'nin tasarımcı yüzeyine sağ tıklayın ve ardından Kodu Görüntüle'ye tıklayın.

  6. WebForm1.aspx.vb yönergelerinin Importssonuna aşağıdaki kodu ekleyin:

    VB
    Imports System.IO
    Imports System.Xml
    Imports System.Xml.Xsl
    Imports System.Xml.XPath
    Imports System.Data.SqlClient
    
  7. Olaya aşağıdaki kodu yapıştırın Page_Load :

    VB
    ' 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)
    
  8. değişiklikleri WebForm1.aspx.vb kaydedin.

Örnek XSLT belgesi oluşturma

  1. DateTimeXSLT ASP.NET Web Projesine DateTime.xslt adlı yeni bir XSLT dosyası ekleyin.

  2. Oluşturulan kodu aşağıdaki kodla değiştirin. (Aşağıdaki kodu yapıştırmaya çalıştığınızda herhangi bir kodlama veya karakter sorunuyla karşılaşırsanız, not defterini aracı araç olarak kullanın.)

    XML
    <?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>
    
  3. DateTime.xslt dosyasındaki değişiklikleri kaydedin.

ASP.NET web formunu kullanarak XSLT dönüştürmesini test edin

  1. Değişiklikleri DateTimeXSLT ASP.NET web projesine kaydedin.
  2. Yapı menüsünde Yapı Çözümü’ne tıklayın.
  3. Internet Explorer'ı başlatın ve IISServerName'in IIS sunucunuzun adı olduğu URL'yi belirterek http://IISServerName/DateTimeXSLT/WebForm1.aspx WebForm1.aspx açın.

Artık WebForm1.aspx sayfasında DataSet biçimi ve dönüştürülmüş DateTime biçim olan iki DateTimeDateTime biçimi görebilirsiniz.