public function generateXmlString(Parts\Page $page)
{
$dom = new DOMDocument('1.0', 'utf-8');
$dom->formatOutput = true;
$dom->loadXML('<page />');
$pageNode = $dom->documentElement;
foreach ($page->getState() as $attrName => $attrValue) {
switch ($attrName) {
case 'id':
$pageNode->setAttribute('id', $attrValue);
break;
case 'zones':
foreach ($page->{$attrName} as $zone) {
$pageNode->appendChild($this->generateZoneXmlString($zone, $dom));
}
break;
case 'layout':
$node = $dom->createElement('zone_layout', $attrValue);
$pageNode->appendChild($node);
break;
case 'attributes':
foreach ($attrValue as $arrayItemKey => $arrayItemValue) {
$this->addNewXmlElement($dom, $pageNode, $arrayItemKey, $arrayItemValue);
}
break;
case 'zonesById':
// Do not store
break;
default:
$this->addNewNotEmptyXmlElement($dom, $pageNode, $attrName, $attrValue);
break;
}
}
return $dom->saveXML();
}