From 48d9f36ea0782789bdc60dd1ca106651f8060f6a Mon Sep 17 00:00:00 2001 From: fieg Date: Tue, 3 Jun 2014 12:14:49 +0200 Subject: [PATCH] [Serializer] fixed bc-break with cdata-section nodes --- .../Component/Serializer/Encoder/XmlEncoder.php | 2 +- .../Serializer/Tests/Encoder/XmlEncoderTest.php | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php index a1c806c7d3a9..cd022a48f3bf 100644 --- a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php @@ -305,7 +305,7 @@ private function parseXmlValue(\DOMNode $node) return $node->nodeValue; } - if (1 === $node->childNodes->length && XML_TEXT_NODE === $node->firstChild->nodeType) { + if (1 === $node->childNodes->length && in_array($node->firstChild->nodeType, array(XML_TEXT_NODE, XML_CDATA_SECTION_NODE))) { return $node->firstChild->nodeValue; } diff --git a/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php b/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php index 6dcdf69be7b6..5a99d78c0c1c 100644 --- a/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php +++ b/src/Symfony/Component/Serializer/Tests/Encoder/XmlEncoderTest.php @@ -228,6 +228,18 @@ public function testDecode() $this->assertEquals(get_object_vars($obj), $this->encoder->decode($source, 'xml')); } + public function testDecodeCdataWrapping() + { + $expected = array( + 'firstname' => 'Paul ', + ); + + $xml = ''."\n". + ']]>'."\n"; + + $this->assertEquals($expected, $this->encoder->decode($xml, 'xml')); + } + public function testDecodeScalarWithAttribute() { $source = ''."\n".