我希望能够使用.NET读取vCard和vCalendar数据,我有一些东西可以做到这一点,并且已经查看了规范。
对于那些不熟悉这种格式的人,这里是我当前应用程序中的一些测试数据:
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和一个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@example.org
REV:20030407T144607Z
End:VCARD它们都存储为纯文本,对于vCalendar为filename.ics,对于vCard为filename.vcf。
我目前使用逐行解析,但是这似乎很原始,因为iCalendar项可以是多行的。是否可以使用LINQ或类似的方法,例如处理丢失或额外元素的方法,包括数据中的回车?
我有这方面的规范,如果对于其他东西也有类似的方法,那么这将是很好的,我使用的是.NET 3.5和Visual basic2008,所以可以使用任何可用的.NET功能来支持它。
发布于 2009-06-26 19:17:52
检查这个:http://www.codeproject.com/KB/dotnet/vCardReader.aspx
或者尝试使用正则表达式:)
https://stackoverflow.com/questions/1050692
复制相似问题