Serialization and Deserialization of Calendars and Business Cards

The IT Hit Collab Library provides classes to serialize to iCalendar/vCard, jCalendar/jCard, hCalendar/hCard and xCalendar/xCard formats.

To serialize/deserialize to/from iCalendar and vCard formats you will use the vFormatter class. For jCalendar/jCard you will use the jFormatter. For hCalendar/hCard - hFormatter. For xCalendar/xCard - xFormatter.

ICard4 card = CardFactory.CreateCard4("My Corp");
IAddress4 adr = card.Addresses.CreateItem();
adr.Street = new[] { "1 Greentree" };
adr.Locality = new[] { "Sydnay" };
adr.Region = new[] { "New South Wales" };
adr.Country = new[] { "Australia" };
adr.PostalCode = new[] { "12345" };
adr.PreferenceLevel = 1;
adr.Types = new AddressType[] { AddressType.Work, AddressType.Postal };
card.Addresses.Add(adr);

string vCard = new vFormatter().Serialize(card);
Console.Write(vCard);

string jCard = new jFormatter().Serialize(card);
Console.Write(jCard);

string hCard = new hFormatter().Serialize(card);            
Console.Write(hCard);

string xCard = new xFormatter().Serialize(card);
Console.Write(xCard);

vCard output:

BEGIN:VCARD
VERSION:4.0
FN:My Corp
ADR;PREF=1;TYPE=WORK,POSTAL:;;1 Greentree;Sydnay;New South Wales;12345;Aust
 ralia
END:VCARD

jCard output:

[
  "vcard",
  [
    "version",
    {},
    "text",
    "4.0"
  ],
  [
    "fn",
    {},
    "text",
    "My Corp"
  ],
  [
    "adr",
    {
      "pref": "1",
      "type": [
        "WORK",
        "POSTAL"
      ]
    },
    "text",
    [
      "",
      "",
      "1 Greentree",
      "Sydnay",
      "New South Wales",
      "12345",
      "Australia"
    ]
  ]
]

hCard output:

<html>
<head>
</head>
<body>
<div class="vcard">
    <div class="fn">
        <span class="value">My Corp</span></div>
    <div class="adr">
        <span class="type">1</span>
        <span class="type">WORK</span>
        <span class="type">POSTAL</span>
        <span class="post-office-box"></span>
        <span class="extended-address"></span>
        <span class="street-address">1 Greentree</span>
        <span class="locality">Sydnay</span>
        <span class="region">New South Wales</span>
        <span class="postal-code">12345</span>
        <span class="country-name">Australia</span></div></div></body></html>

xCard output:

<?xml version="1.0" encoding="utf-8"?>
<vcards xmlns="urn:ietf:params:xml:ns:vcard-4.0">
  <vcard>
    <fn>
      <text>My Corp</text>
    </fn>
    <adr>
      <parameters>
        <pref>
          <integer>1</integer>
        </pref>
        <type>
          <text>WORK</text>
          <text>POSTAL</text>
        </type>
      </parameters>
      <post-office-box />
      <extended-address />
      <street-address>1 Greentree</street-address>
      <locality>Sydnay</locality>
      <region>New South Wales</region>
      <postal-code>12345</postal-code>
      <country-name>Australia</country-name>
    </adr>
  </vcard>
</vcards>