Как читать xsd: dateTime с msxml? - PullRequest
       15

Как читать xsd: dateTime с msxml?

2 голосов
/ 29 апреля 2009

Я использую msxml для разбора файла xml. Язык C ++. XML-файл содержит некоторые даты и время в формате xsd: dateTime (что-то вроде этого: 2009-04-29T12: 00: 00Z)

Есть ли простой способ конвертировать xsd: dateTime в что-то вроде SYSTEMTIME, FILETIME или VariantTime?

Ответы [ 2 ]

1 голос
/ 30 апреля 2009
0 голосов
/ 17 декабря 2009

Вы можете использовать JavaScript:

<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>

Не забудьте включить сценарии, прежде чем выполнять преобразование:

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