我工作的應用程序,它通過谷歌API解析谷歌日曆DDay.iCal解析谷歌日曆DDay.iCal
主要屬性,屬性很容易 ... ev.Summary = evt.Title處理。文本;
問題是,當我得到了一個重複事件中,XML包含一個字段,如:
<gd:recurrence>
DTSTART;VALUE=DATE:20100916
DTEND;VALUE=DATE:20100917
RRULE:FREQ=YEARLY
</gd:recurrence>
或
<gd:recurrence>
DTSTART:20100915T220000Z
DTEND:20100916T220000Z
RRULE:FREQ=YEARLY;BYMONTH=9;WKST=SU"
</gd:recurrence>
使用下面的代碼:
String[] lines =
evt.Recurrence.Value.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
foreach (String line in lines)
{
if (line.StartsWith("R"))
{
RecurrencePattern rp = new RecurrencePattern(line);
ev.RecurrenceRules.Add(rp);
}
else
{
ISerializationContext ctx = new SerializationContext();
ISerializerFactory factory = new DDay.iCal.Serialization.iCalendar.SerializerFactory();
ICalendarProperty property = new CalendarProperty();
IStringSerializer serializer = factory.Build(property.GetType(), ctx) as IStringSerializer;
property = (ICalendarProperty)serializer.Deserialize(new StringReader(line));
ev.Properties.Add(property);
Console.Out.WriteLine(property.Name + " - " + property.Value);
}
}
RRULEs被正確解析,但問題在於其他屬性(d有時)值爲空...
您的意思是使用DTSTART和DTEND冒號後您的第一個例子嗎?在第二個例子中SU之後是否意味着一個雙引號? – 2011-07-09 20:43:34