xCal and xCard

Since version 4.0, there's now native support for parsing and generating the xCal and xCard formats.

These formats use XML to serialize vCard and iCalendar. It is possible to exactly map iCalendar and vCard to jCal and jCard, and therefore you can convert back and forward, without any data-loss.

Generating a xCal or xCard object

Any time you have a reference to a VCARD or VCALENDAR object in vobject, simply use the Writer object to turn it into XML.

Here's an example of parsing an iCalendar object, and then outputting it as a xCal object:

$vcal = \Sabre\VObject\Reader::read(fopen('my_calendar.ics', 'r'));
echo \Sabre\VObject\Writer::writeXml($vcal);

Parsing xCal and xCard

To parse a xCard or xCal object, use the following snippet:

$input = 'xcard.xml';
$xCard = VObject\Reader::readXml(fopen($input, 'r'));

You can pass either an XML string or a readable stream.