2009-06-26 6 views
1

Ich möchte in der Lage sein, vCard und vCalendar-Daten mit .NET zu lesen, ich habe etwas, das dies tut, und habe die Spezifikation betrachtet.
Für diejenigen, die nicht vertraut mit dem Format hier einige Testdaten aus meiner aktuellen Anwendung:Lesen von vCalendar und vCard mit .NET?

BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//Microsoft Corporation//Windows Calendar 1.0//EN 
CALSCALE:GREGORIAN 
METHOD:PUBLISH 
BEGIN:VTIMEZONE 
TZID:Greenwich Mean Time : Dublin\, Edinburgh\, Lisbon\, London 
BEGIN:STANDARD 
DTSTART:20001029T020000 
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 
TZNAME:GMT Standard Time 
TZOFFSETFROM:+0100 
TZOFFSETTO:+0000 
END:STANDARD 
BEGIN:DAYLIGHT 
DTSTART:20000326T010000 
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 
TZNAME:GMT Daylight Time 
TZOFFSETFROM:+0000 
TZOFFSETTO:+0100 
END:DAYLIGHT 
END:VTIMEZONE 
BEGIN:VEVENT 
DESCRIPTION:Upload ZuneCardr InTouch to the brand new ZuneCardr.com 
DTSTAMP:20080120T135839Z 
DTSTART;TZID="Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London":2008 
0318T140000 
DTEND;TZID="Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London":200803 
18T150000 
LOCATION:Internet 
SUMMARY:ZuneCardr intouch 
UID:D6969118-476F-4BB1-A71C-FC8D212F97CF 
END:VEVENT 
END:VCALENDAR 

Und eine vCard

BEGIN:VCARD 
VERSION:2.1 
N:Planetoid;Rogue;Middle;Mr; 
FN:Rogue Planetoid 
ORG:Comentsys 
TITLE:My Contact Title 
NOTE;ENCODING=QUOTED-PRINTABLE:Stack Overflow 
TEL;WORK;VOICE:020-000-11 
TEL;HOME;VOICE:191-999-9999 
TEL;CELL;VOICE:177-899-111 
TEL;WORK;FAX:020-000-222 
ADR;WORK;ENCODING=QUOTED-PRINTABLE:;;Stack Overflow;Stack Overflow City;MO;98901; 
ADR;HOME;ENCODING=QUOTED-PRINTABLE:;;Address;City;CO;90210; 
EMAIL;PREF;INTERNET:[email protected] 
REV:20030407T144607Z 
End:VCARD 

sowohl als Klartext gespeichert Diese werden, filename.ics für vCalendar und Dateiname.vcf für vCard.
Ich verwende derzeit Zeile für Zeile Parsing, aber dies scheint primitiv wie iCalendar Elemente können mehrere Zeilen könnte LINQ oder ähnliche Methode verwendet werden, wie diejenigen, die mit fehlenden oder zusätzlichen Elementen, einschließlich Wagenrücklauf in den Daten bewältigen?
Ich habe die Spezifikationen dafür, wenn eine ähnliche Möglichkeit für etwas anderes möglich ist, dann wird das in Ordnung sein, ich benutze .NET 3.5 und Visual Basic 2008, so kann jede .NET-Funktion verwenden, die dies unterstützen könnte.

Antwort