From 37d3f84f1c6dbdc38fc277d273107cac2a51786c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Thu, 18 Dec 2014 19:24:14 +0100 Subject: [PATCH] [Serializer] Add xml_format_output context option. Close #12517. --- .../Serializer/Encoder/XmlEncoder.php | 3 +++ .../Tests/Encoder/XmlEncoderTest.php | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php index c531c7309b24a..ba800497dcfa1 100644 --- a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php @@ -19,6 +19,7 @@ * @author Jordi Boggiano * @author John Wards * @author Fabian Vogler + * @author Kévin Dunglas */ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, DecoderInterface, NormalizationAwareInterface { @@ -514,6 +515,8 @@ private function createDomDocument(array $context) // Set an attribute on the DOM document specifying, as part of the XML declaration, $xmlOptions = array( + // nicely formats output with indentation and extra space + 'xml_format_output' => 'formatOutput', // the version number of the document 'xml_version' => 'xmlVersion', // the encoding of the document diff --git a/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php b/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php index cba47e6b1717f..ed29fd7ebd983 100644 --- a/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php +++ b/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php @@ -137,6 +137,26 @@ public function testEncodeXmlAttributes() $this->assertSame($expected, $this->encoder->encode($array, 'xml', $context)); } + public function testContext() + { + $array = array('person' => array('name' => 'George Abitbol')); + $expected = << + + + George Abitbol + + + +XML; + + $context = array( + 'xml_format_output' => true, + ); + + $this->assertSame($expected, $this->encoder->encode($array, 'xml', $context)); + } + public function testEncodeScalarRootAttributes() { $array = array(