1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
<?php
namespace Gedcomx\GedcomxFile;
use Gedcomx\Extensions\FamilySearch\FamilySearchPlatform;
use Gedcomx\Gedcomx;
use Gedcomx\Util\XmlMapper;
class DefaultXMLSerialization implements GedcomxEntrySerializer, GedcomxEntryDeserializer
{
public function deserialize($incoming)
{
$resources = null;
$reader = new \XMLReader();
$reader->xml($incoming);
$reader->read();
do {
if ($reader->nodeType == \XMLReader::ELEMENT && XmlMapper::isKnownType($reader->name)) {
$class = XmlMapper::getClassName($reader->name);
$resources[] = new $class($reader);
}
} while ($reader->read());
return $resources;
}
public function serialize($resource)
{
$xml = new \XMLWriter();
$xml->openMemory();
$xml->setIndent(true);
$xml->setIndentString(" ");
$xml->startDocument('1.0', 'UTF-8');
$resource->toXml($xml);
$xml->endDocument();
return $xml->outputMemory(true);
}
public function isKnownContentType($contentType)
{
return in_array($contentType, array(
Gedcomx::XML_MEDIA_TYPE,
FamilySearchPlatform::XML_MEDIA_TYPE
));
}
}