我试图基于根节点上的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
中已经具有所有必需的映射数据,但是我无法弄清楚如何匹配它们并返回正确的类型。
任何帮助将不胜感激。