<?php
use JMS\Serializer\SerializerBuilder;
use JMS\Serializer\Annotation as A;
// for annotations see
// http://jmsyst.com/libs/serializer/master/reference/annotations
/**
* A\ExclusionPolicy("all")
* @A\XmlRoot("data")
*/
class Data
{
/**
* @A\Type("integer")
*/
private $id;
/**
* @A\Type("string")
*/
private $name;
/**
* @A\XmlKeyValuePairs
* @A\Type("array<string, string>")
*/
private $values = [];
/**
* @A\Type("integer")
*/
private $null = null;
}
$serializedXml = '<?xml version="1.0" encoding="UTF-8"?>
<data>
<id>1</id>
<name><![CDATA[John Doe]]></name>
<values>
<entry><![CDATA[32]]></entry>
<entry><![CDATA[brown]]></entry>
</values>
</data>';
$serializer = (new SerializerBuilder())
->build();
$data = $serializer->deserialize(
$serializedXml,
Data::CLASS,
'xml'
);
dump($data);
^ Data {#1440 -id: 1 -name: "John Doe" -values: array:1 [ "entry" => "brown" ] -null: null }