解析XML,日期格式(PT0H0M0S,PT2920H0M0S)

时间:2014-07-28 09:00:45

标签: python xml python-2.7 ms-project

我尝试使用python解析从MS Project 2013导出的xml文件,它包含以下数据:

<TimephasedData>
    <Type>1</Type>
    <UID>4628</UID>
    <Start>2014-09-22T08:00:00</Start>
    <Finish>2015-09-22T08:00:00</Finish>
    <Unit>8</Unit>
    <Value>PT2920H0M0S</Value>
</TimephasedData>
<TimephasedData>
    <Type>1</Type>
    <UID>4628</UID>
    <Start>2015-09-22T08:00:00</Start>
    <Finish>2015-09-23T08:00:00</Finish>
    <Unit>2</Unit>
    <Value>PT8H0M0S</Value>
</TimephasedData>

我不明白的是PT8H0M0S和PT2920H0M0S代表什么(TimephasedData)。目前我通过替换字符&#34; T&#34;来解析日期。然后使用strptime

1 个答案:

答案 0 :(得分:3)

这是ISO 8601持续时间值。比较使用此表示法的iCal duration data type规范:

  

正式定义

     

值类型由以下表示法定义:

dur-value  = (["+"] / "-") "P" (dur-date / dur-time / dur-week)
dur-date   = dur-day [dur-time]   
dur-time   = "T" (dur-hour / dur-minute / dur-second)
dur-week   = 1*DIGIT "W"
dur-hour   = 1*DIGIT "H" [dur-minute]
dur-minute = 1*DIGIT "M" [dur-second]  
dur-second = 1*DIGIT "S"
dur-day    = 1*DIGIT "D"

所以PT8H0M0S是持续时间(T),8小时(8H),0分钟(0M),0秒(0S) 。 (P代表&#34;期间&#34;当然)。

至少有一个Python包可以处理转换这些类型的值,例如https://pypi.python.org/pypi/isodate