From 8f8230ac3a9526ed5a0740c8c80b731f17c75adb Mon Sep 17 00:00:00 2001 From: Dany Maillard Date: Tue, 28 Aug 2018 00:11:30 +0200 Subject: [PATCH] Add support for ignoring comments while XML encoding --- .../Component/Serializer/Encoder/XmlEncoder.php | 4 +++- .../Serializer/Tests/Encoder/XmlEncoderTest.php | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php index ec9d9fdff400c..c04b7d845b52c 100644 --- a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php @@ -378,7 +378,9 @@ private function buildXml(\DOMNode $parentNode, $data, string $xmlRootNodeName = } elseif ('#' === $key) { $append = $this->selectNodeType($parentNode, $data); } elseif ('#comment' === $key) { - $append = $this->appendComment($parentNode, $data); + if (!\in_array(XML_COMMENT_NODE, $this->encoderIgnoredNodeTypes, true)) { + $append = $this->appendComment($parentNode, $data); + } } elseif (\is_array($data) && false === is_numeric($key)) { // Is this array fully numeric keys? if (ctype_digit(implode('', array_keys($data)))) { diff --git a/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php b/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php index bbcd0d319d69a..e2803e444d958 100644 --- a/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php +++ b/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php @@ -782,6 +782,21 @@ public function testEncodeWithoutPI() $this->assertEquals($expected, $encoder->encode(array(), 'xml')); } + public function testEncodeWithoutComment() + { + $encoder = new XmlEncoder('response', null, array(), array(XML_COMMENT_NODE)); + + $expected = <<<'XML' + + + +XML; + + $data = array('#comment' => ' foo '); + + $this->assertEquals($expected, $encoder->encode($data, 'xml')); + } + /** * @return XmlEncoder */