Чтение vCalendar и vCard с использованием .NET? - PullRequest
1 голос
/ 26 июня 2009

Я хочу иметь возможность читать данные vCard и vCalendar с помощью .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

И визитная карточка

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@example.org
REV:20030407T144607Z
End:VCARD

Они оба хранятся в виде простого текста, filename.ics для vCalendar и filename.vcf для vCard.
В настоящее время я использую построчный анализ, однако это кажется примитивным, поскольку элементы iCalendar могут быть многострочными, если можно использовать LINQ или аналогичный метод, например те, которые справляются с отсутствующими или дополнительными элементами, включая возврат каретки в данных?
У меня есть спецификации для этого, если подобный способ возможен для чего-то другого, тогда это будет хорошо, я использую .NET 3.5 и Visual Basic 2008, поэтому могу использовать любую доступную функцию .NET, которая может поддерживать это.

1 Ответ

3 голосов
/ 26 июня 2009

Проверьте это: http://www.codeproject.com/KB/dotnet/vCardReader.aspx

или попробуйте использовать регулярные выражения:)

...