@@ -204,6 +204,9 @@ These are the options available on the :ref:`serializer context <serializer-cont
204
204
require it. Example: ``'/(firstname|lastname)/' ``
205
205
``ignore_empty_attributes `` (default: ``false ``)
206
206
If set to true, ignores all attributes with empty values in the generated XML
207
+ ``preserve_numeric_keys `` (default: ``false ``)
208
+ If set to true, it keeps numeric array indexes (e.g. ``<item key="0"> ``)
209
+ instead of collapsing them into ``<item> `` nodes.
207
210
208
211
Example with a custom ``context ``::
209
212
@@ -235,6 +238,45 @@ Example with a custom ``context``::
235
238
// <date>2019-10-24</date>
236
239
// </track>
237
240
241
+ Example with ``preserve_numeric_keys ``::
242
+
243
+ use Symfony\Component\Serializer\Encoder\XmlEncoder;
244
+
245
+ $data = [
246
+ 'person' => [
247
+ ['firstname' => 'Benjamin', 'lastname' => 'Alexandre'],
248
+ ['firstname' => 'Damien', 'lastname' => 'Clay'],
249
+ ],
250
+ ];
251
+
252
+ $xmlEncoder->encode($data, 'xml', ['preserve_numeric_keys' => false]);
253
+ // outputs:
254
+ //<response>
255
+ // <person>
256
+ // <firstname>Benjamin</firstname>
257
+ // <lastname>Alexandre</lastname>
258
+ // </person>
259
+ // <person>
260
+ // <firstname>Damien</firstname>
261
+ // <lastname>Clay</lastname>
262
+ // </person>
263
+ //</response>
264
+
265
+ $xmlEncoder->encode($data, 'xml', ['preserve_numeric_keys' => true]);
266
+ // outputs:
267
+ //<response>
268
+ // <person>
269
+ // <item key="0">
270
+ // <firstname>Benjamin</firstname>
271
+ // <lastname>Alexandre</lastname>
272
+ // </item>
273
+ // <item key="1">
274
+ // <firstname>Damien</firstname>
275
+ // <lastname>Clay</lastname>
276
+ // </item>
277
+ // </person>
278
+ //</response>
279
+
238
280
The ``YamlEncoder ``
239
281
-------------------
240
282
0 commit comments