2009-04-29 6 views
2

Ich verwende die msxml, um eine XML-Datei zu analysieren. Sprache ist C++. Die XML-Datei enthält einige Daten und Zeiten mit dem xsd: dateTime-Format (etwa so: 2009-04-29T12: 00: 00Z)Wie liest man eine xsd: dateTime mit msxml?

Gibt es eine einfache Möglichkeit zum Konvertieren von xsd: dateTime in etwas wie SYSTEMTIME, FILETIME oder VariantTime?

Antwort

1

Vielleicht hilft Ihnen das: Using strptime to parse ISO 8601 formated timestamps on ioncannon.net.

+0

Vielen Dank für Ihre Antwort. strptime ist eine ziemlich interessante Funktion, aber es ist nicht auf Windows verfügbar ... Ich sah im Internet einige Implementierungen von Strptime unter BSD-Lizenz, aber ich denke, es würde ziemlich funktionieren müssen, bis es auf Windows kompiliert ... – Name

+0

Es war nur Ein Schuss in die Dunkelheit, wirklich. Es tut mir Leid. : - \ – Tomalak

+0

Es ist immer noch eine gute Antwort. Es könnte jemandem helfen, der unter UNIX nach dem gleichen sucht. Und es gibt mir neue Suchrichtungen, um eine Lösung für Windows zu finden. – Name

0

können Sie einen JavaScript verwenden:

<xsl:transform 
id="integra-transformer" 
version="1.0" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:date="urn:date-scripts"> 

<xsl:output method="xml" indent="yes" /> 

<msxsl:script 
    implements-prefix="date" 
    language="javascript"> 
    <![CDATA[ 
    Date.prototype.toISO8601ShortString = function() { 
     var zeropad = function (num) { return ((num < 10) ? '0' : '') + num; } 
     var str = ""; 
     var date = new Date(); 
     str += date.getUTCFullYear(); 
     str += "-" + zeropad(date.getUTCMonth() + 1); 
     str += "-" + zeropad(date.getUTCDate()); 
     str += "T" + zeropad(date.getUTCHours()) + 
     ":" + zeropad(date.getUTCMinutes()); 
     return str; 
    } 

    function getToday() 
    { 
     var d; 
     d = new Date(); 
     return(d.toISO8601ShortString()); 
    } 
    ]]> 
</msxsl:script> 


<xsl:template match="/"> 
     <date> 
      <xsl:value-of select="date:getToday()"/> 
     </date> 
    </xsl:template> 
</xsl:transform> 

Vergessen Sie nicht, Skripte zu ermöglichen, vor dem Sie die Transformation zu tun:

xslDom.setProperty("AllowXsltScript", true) 
+0

Vielen Dank für Ihre Antwort, aber soweit ich verstehe, ist Ihr Skript ein Datum in xsd: dateTime und nicht von xsd: dateTime zu konvertieren. Das Problem beim Konvertieren von "von xsd: dateTime" ist, dass xsd: dateTime viele verschiedene Syntaxen zulässt (zum Beispiel eine Wochennummer anstelle eines Datums, ...) – Name

Verwandte Themen