DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
XSLTransform mit .NET Code

XML Daten lassen sich sehr einfach per ReadXML in ein Dataset laden. Dabei treten aber oft Formatprobleme auf. Das konkrete Problem zeige ich anhand eines RSS importers.

Ich verwende ein XSTL File und eine entsprechende Transformation um aus den RSS passende Daten zu generieren

(Details in einem anderen Artikel). Mein konkretes Problem ist das Datum. Dies wird per default als String übernommen und lässt sich dann nicht mehr weiterverarbeiten für sortieren oder filtern. Die gute Nachricht ist, das man im XSLT File Verweise auf .NET Funktionen machen kann. Hier heisst diese Funktion ParseDate.

Zunächst wird im XSLT File ein Namensraum deklariert der hier Utils genannt wird.

<xsl:transform version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:utils="urn:utils"

Im Namensraum Utils wird die Funktion ParseDate mit dem Inhalt des Elements PubDate als Parameter aufgerufen. Die XSL Funktion value-of erlaubt den Zugriff auf pubDate. Dann wird wieder ein Element PubDate, diesesmal mit dem neuen Datumsformat erzeugt.

 <pubDate>

<xsl:value-of select="utils:ParseDate(pubDate)" />

</pubDate>

In der Klasse Utils ( bei .NET 2.0 in app_code) wird die Funktion ParseDate gecoded.

Public Function ParseDate(ByVal Datum As String) As Date

Return (DateTime.Parse(Datum).ToUniversalTime())

End Function

 Nun muss noch über ein XSLTArgumentList Objekt die Verbindung zur Utils Klasse hergestellt werden. Dabei wird der Funktion AddExtensionObject der Namensraum und die erzeugte Instanz übergeben. Beim Transform werden die Argumente mitgegeben.

Dim xslArg As Xsl.XsltArgumentList = New Xsl.XsltArgumentList()

xslArg.AddExtensionObject("urn:utils", New Utils())

XslDoc.Transform(XmlDoc, xslArg, writer)

Ich war wirklich begeistert vom Ergebnis. Mein Gridview zeigt nun die Daten richtig an und sortiert auch richtig nach Datum. XSL und XML können wirklich sehr nützliche Hilfen sein.

DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 31.07.2005
  Gültig bis: 29.10.2005
1 Ratings
Bewertung: 20,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG