У меня есть сложный XML файл, который мне нужно десериализовать в PHP Объект.
XML
<?xml version="1.0" encoding="UTF-8"?>
<xb:BAG-Extract-Deelbestand-LVC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
...>
<xb:antwoord>
<xb:vraag>
<selecties-extract:Gebied-Registratief>
<selecties-extract:Gebied-NLD>
<selecties-extract:GebiedIdentificatie>9999</selecties-extract:GebiedIdentificatie>
<selecties-extract:GebiedNaam>Nederland</selecties-extract:GebiedNaam>
<selecties-extract:gebiedTypeNederland>1</selecties-extract:gebiedTypeNederland>
</selecties-extract:Gebied-NLD>
</selecties-extract:Gebied-Registratief>
<selecties-extract:StandTechnischeDatum>20200208</selecties-extract:StandTechnischeDatum>
</xb:vraag>
<xb:producten>
<product_LVC:LVC-product>
<bag_LVC:Nummeraanduiding>
<bag_LVC:identificatie>123456789</bag_LVC:identificatie>
<bag_LVC:aanduidingRecordInactief>N</bag_LVC:aanduidingRecordInactief>
<bag_LVC:aanduidingRecordCorrectie>0</bag_LVC:aanduidingRecordCorrectie>
</bag_LVC:Nummeraanduiding>
</product_LVC:LVC-product>
</xb:producten>
</xb:antwoord>
</xb:BAG-Extract-Deelbestand-LVC>
Код
$xml = ...;
$encoders = [
new \Symfony\Component\Serializer\Encoder\XmlEncoder(),
];
$normalizers = [
new \Symfony\Component\Serializer\Normalizer\ObjectNormalizer(),
new \Symfony\Component\Serializer\Normalizer\ArrayDenormalizer(),
];
$serializer = new \Symfony\Component\Serializer\Serializer($normalizers, $encoders);
$obj = $serializer->deserialize($xml,\App\Entity\Nummeraanduiding::class . '[]', 'xml');
Объект
class Nummeraanduiding
{
private $identificatie;
private $aanduidingRecordInactief;
private $aanduidingRecordCorrectie;
}
Я получаю следующий результат
array(12) {
["@xmlns:selecties-extract"]=>
object(App\Entity\Nummeraanduiding)#13 (13) {
["identificatie":"App\Entity\Nummeraanduiding":private]=>
NULL
["aanduidingRecordInactief":"App\Entity\Nummeraanduiding":private]=>
NULL
["aanduidingRecordCorrectie":"App\Entity\Nummeraanduiding":private]=>
NULL
Кто-нибудь знает, как я могу установить xb:BAG-Extract-Deelbestand-LVC > xb:antwoord > xb:producten
как root для повторения? или другие / лучшие способы десериализации XML в коллекцию Nummeraanduiding объектов.