Symfony3: массив десериализации XML

Документация Symfony 3.4 гласит следующее для десериализации массивов:

use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
use Symfony\Component\Serializer\Serializer;

$serializer = new Serializer(
array(new GetSetMethodNormalizer(), new ArrayDenormalizer()),
array(new JsonEncoder())
);

$data = ...; // The serialized data from the previous example
$persons = $serializer->deserialize($data, 'Acme\Person[]', 'json');

Строка json выглядит следующим образом:

[{ «Имя»: «Foo», «возраст»: 99, «спортсмен» ложь}, { «имя»: «бар», «возраст»: 33, «спортсмен»: истинно}]

Поэтому я попытался сделать то же самое с моей структурой XML. Это не настоящая структура, так как я проверяю это.

Структура XML:

<<<EOF
<response>
<book>
<titulo>foo</titulo>
<isbn>99</isbn>
<autor>Autor</autor>
<editor>Editor</editor>
</book>
<book>
<titulo>foo2</titulo>
<isbn>100</isbn>
<autor>Autor2</autor>
<editor>Editor2</editor>
</book>
</response>
EOF;

Ответ — это имя корневого узла по умолчанию. У меня есть сущность Book с полями, определенными одинаково.
Я пытаюсь десериализовать так:

use AppBundle\Entity\Book;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;

$encoders = array(new XmlEncoder(), new JsonEncoder());
$normalizers = array(new GetSetMethodNormalizer(), new ArrayDenormalizer());
$serializer = new Serializer($normalizers, $encoders);

$serializer->deserialize($data,  'AppBundle\Entity\Book[]', 'xml');

Когда я делаю var_dump для переменной десериализации, вывод выглядит следующим образом:

array (1) {[«book»] => объект (AppBundle \ Entity \ Book) # 385 (11) {[«isbn»: protected] => NULL [«автор»: защищен] => NULL [«titulo» : protected] => NULL [«fecha_ini»: защищено] => NULL [«fecha_fin»: protected] => NULL [«редактор»: защищено] => NULL [«imgUrl»: protected] => NULL [«cod_autor» : protected] => NULL [«cod_editorial»: защищено] => NULL [«cod_coleccion»: protected] => NULL [«cod_mat»: protected] => NULL}}

Данные не распознаются, и массив имеет только один элемент, когда я ожидаю 2 элемента.

Кто-то испытывает что-то подобное? Можете ли вы помочь мне, где искать решение?

Заранее спасибо.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]