如何在JMS Serializer SubscribingHandler中查找元数据?

时间:2019-01-28 17:08:52

标签: php symfony jmsserializerbundle jms-serializer

我试图基于根节点上的xml属性反序列化SubscribingHandler内的xml字符串,但是我似乎找不到正确的方法。

让我们看看这段伪代码:

<?php
class FormulierWaardeHandler implements SubscribingHandlerInterface
{
    private const TYPE_NAMESPACE = 'http://www.w3.org/2001/XMLSchema-instance';
    private const TYPE_ATTRIBUTE = 'type';

    public static function getSubscribingMethods()
    {
        return array(
            array(
                'direction' => GraphNavigator::DIRECTION_DESERIALIZATION,
                'format' => 'xml',
                'type' => WaardeType::class,
                'method' => 'deserializeWaardeType'
            ),
        );
    }

    public function deserializeWaardeType(
        XmlDeserializationVisitor $visitor,
        \SimpleXMLElement $data,
        array $type,
        DeserializationContext $context
    ) {
        $domElement = dom_import_simplexml($data);

        $typeName = $domElement->getAttributeNS(self::TYPE_NAMESPACE, self::TYPE_ATTRIBUTE);
        $type['name'] = $typeName;


//            '<formulier2data:Waarde i:type="formulier2data:DatumTijd"><formulier2data:Datum>2023-07-17T02:00:00+02:00</formulier2data:Datum></formulier2data:Waarde>',

    // TODO: deserialize above piece of xml so that it matches the i:type metadata

//        return new DatumTijd($datum);
    }
}

我需要获取DatumTijd类型或在那里定义的其他任何类型的元数据。 ./metadata/{types}.yml中已经具有所有必需的映射数据,但是我无法弄清楚如何匹配它们并返回正确的类型。

任何帮助将不胜感激。

0 个答案:

没有答案