【发布时间】:2021-04-28 10:36:30
【问题描述】:
如何更改 Symfony 序列化器生成的 XML 文档的节点名称? 我用这段代码生成 XML:
final class AdsController extends AbstractController
{
private SerializerInterface $serializer;
public function __construct(SerializerInterface $serializer)
{
$this->serializer = $serializer;
$this->normalizer = $normalizer;
}
public function __invoke(Request $request): Response
{
$ads = $this->em->findAll();
$rootNode = [
'@id' => 12345,
'#' => $ads
];
$res = $this->serializer->serialize($rootNode, 'xml', [
'xml_format_output' => true,
'xml_encoding' => 'utf-8',
'xml_root_node_name' => 'ads'
]);
return $res;
}
}
$res 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<ads id="12345">
<item></item>
</ads>
但是如何得到这样的东西:
<?xml version="1.0" encoding="UTF-8"?>
<ads id="12345">
<ad adId="123"></ad>
</ads>
我的标准化器如下所示:
class AdNormalizer implements ContextAwareNormalizerInterface
{
public function normalize($topic, string $format = null, array $context = [])
{
$data['adName'] = ...
return $data;
}
public function supportsNormalization($data, string $format = null, array $context = [])
{
return $data instanceof Ad;
}
}
【问题讨论】:
标签: symfony serialization