/** * {@inheritdoc} */ public function serializeEmbeddeds(array $embeddeds, XmlSerializationVisitor $visitor, SerializationContext $context) { foreach ($embeddeds as $embedded) { if ($embedded->getData() instanceof \Traversable || is_array($embedded->getData())) { foreach ($embedded->getData() as $data) { $entryNode = $visitor->getDocument()->createElement('resource'); $visitor->getCurrentNode()->appendChild($entryNode); $visitor->setCurrentNode($entryNode); $visitor->getCurrentNode()->setAttribute('rel', $embedded->getRel()); if (null !== ($node = $context->accept($data))) { $visitor->getCurrentNode()->appendChild($node); } $visitor->revertCurrentNode(); } continue; } $entryNode = $visitor->getDocument()->createElement('resource'); $visitor->getCurrentNode()->appendChild($entryNode); $visitor->setCurrentNode($entryNode); $visitor->getCurrentNode()->setAttribute('rel', $embedded->getRel()); if (null !== ($node = $context->accept($embedded->getData()))) { $visitor->getCurrentNode()->appendChild($node); } $visitor->revertCurrentNode(); } }
/** * @param XmlSerializationVisitor $visitor * @param ExceptionWrapper $wrapper * @param array $type * @param Context $context */ public function serializeToXml(XmlSerializationVisitor $visitor, ExceptionWrapper $wrapper, array $type, Context $context) { $data = $this->convertToArray($wrapper); if (null === $visitor->document) { $visitor->document = $visitor->createDocument(null, null, true); } foreach ($data as $key => $value) { $entryNode = $visitor->document->createElement($key); $visitor->getCurrentNode()->appendChild($entryNode); $visitor->setCurrentNode($entryNode); $node = $context->getNavigator()->accept($value, null, $context); if (null !== $node) { $visitor->getCurrentNode()->appendChild($node); } $visitor->revertCurrentNode(); } }
/** * Normalize wrapper to serialize with xml * Event class name is added * * @param XmlSerializationVisitor $visitor * @param EventContainer $container * @param array $type * @param Context $context */ public function serializeContainerXml(XmlSerializationVisitor $visitor, EventContainer $container, array $type, Context $context) { if (!$visitor->getDocument()) { /** @var ClassMetadata $metadata */ $metadata = $context->getMetadataFactory()->getMetadataForClass(__NAMESPACE__ . '\\EventContainer'); $metadata->xmlRootName = 'event'; $visitor->startVisitingObject($metadata, $container, [], $context); // $visitor->visitArray([], ['name' => 'array'], $context); } $event = $container->getEvent(); $node = $visitor->getCurrentNode(); $node->setAttribute('type', $this->namingStrategy->classToType(get_class($event))); $data = $visitor->getDocument()->createElement('data'); $visitor->getCurrentNode()->appendChild($data); $visitor->setCurrentNode($data); $visitor->getNavigator()->accept($event, null, $context); $visitor->revertCurrentNode(); }