2009-04-29 2 views
2

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

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

ответ

1

Возможно, это поможет вам: Using strptime to parse ISO 8601 formated timestamps на ioncannon.net.

+0

Спасибо за ваш ответ. strptime - довольно интересная функция, но она недоступна в Windows ... Я видел в Интернете некоторые реализации strptime под лицензией bsd, но я думаю, что это потребует полной работы, пока она не будет компилироваться в Windows ... – Name

+0

Это было просто выстрел в темноте, действительно. Прости. : - \ – Tomalak

+0

Это по-прежнему хороший ответ. Это может помочь кому-то искать одно и то же в unix. И это дает мне новые направления поиска, чтобы найти решение на окнах. – Name

0

Вы можете использовать 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> 

Не забудьте включить скрипты Befor вы делаете преобразование:

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

Спасибо за ваш ответ, но насколько я понимаю, ваш скрипт должен преобразовать дату в xsd: dateTime, а не из xsd: dateTime. Проблема в преобразовании «from xsd: dateTime» заключается в том, что xsd: dateTime позволяет использовать множество разных синтаксисов (например, номер недели вместо даты, ...) – Name

Смежные вопросы