From 90abc0f45446245b19c2260bdb504adc7b2057ad Mon Sep 17 00:00:00 2001 From: Manuel Reinhard Date: Tue, 17 Jan 2012 10:51:09 +0100 Subject: [PATCH 1/3] [Serializer][XmlEncoder] add CDATA padding only if necessary Changed XML encoder so CDATA padding is only added to value if necessary. --- .../Serializer/Encoder/XmlEncoder.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php index 4ffe330d6f..b006f98fde 100644 --- a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php @@ -304,6 +304,21 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec return $appendNode; } + + /** + * Checks if a value contains any characters which would require CDATA padding. + * + * @param string $val + * + * @return Boolean + */ + private function needsCdataPadding($val) + { + return preg_match('/[<>&]/', $val); + } + + + /** * Tests the value being passed and decide what sort of element to create * @@ -325,8 +340,10 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec return $this->buildXml($node, $this->serializer->normalize($val, $this->format)); } elseif (is_numeric($val)) { return $this->appendText($node, (string) $val); - } elseif (is_string($val)) { + } elseif (is_string($val) && $this->needsCdataPadding($val)) { return $this->appendCData($node, $val); + } elseif (is_string($val)) { + return $this->appendText($node, $val); } elseif (is_bool($val)) { return $this->appendText($node, (int) $val); } elseif ($val instanceof \DOMNode) { From 7f3464386b213d7c15d389f1c847da56c1e74ee4 Mon Sep 17 00:00:00 2001 From: Manuel Reinhard Date: Tue, 17 Jan 2012 11:25:25 +0100 Subject: [PATCH 2/3] [Pull Request 3134] Improved code based on comments --- src/Symfony/Component/Serializer/Encoder/XmlEncoder.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php index b006f98fde..7243cc7708 100644 --- a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php @@ -304,21 +304,18 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec return $appendNode; } - /** - * Checks if a value contains any characters which would require CDATA padding. + * Checks if a value contains any characters which would require CDATA wrapping. * * @param string $val * * @return Boolean */ - private function needsCdataPadding($val) + private function needsCdataWrapping($val) { return preg_match('/[<>&]/', $val); } - - /** * Tests the value being passed and decide what sort of element to create * @@ -340,7 +337,7 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec return $this->buildXml($node, $this->serializer->normalize($val, $this->format)); } elseif (is_numeric($val)) { return $this->appendText($node, (string) $val); - } elseif (is_string($val) && $this->needsCdataPadding($val)) { + } elseif (is_string($val) && $this->needsCdataWrapping($val)) { return $this->appendCData($node, $val); } elseif (is_string($val)) { return $this->appendText($node, $val); From 9cb513f962034588f1ee6953d58c19fccca1dca1 Mon Sep 17 00:00:00 2001 From: Manuel Reinhard Date: Tue, 17 Jan 2012 14:18:32 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Now=E2=80=A6=C2=A0no=20more=20tabs!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Serializer/Encoder/XmlEncoder.php | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php index 7243cc7708..0081493dac 100644 --- a/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/XmlEncoder.php @@ -304,17 +304,17 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec return $appendNode; } - /** - * Checks if a value contains any characters which would require CDATA wrapping. - * - * @param string $val - * - * @return Boolean - */ - private function needsCdataWrapping($val) - { - return preg_match('/[<>&]/', $val); - } + /** + * Checks if a value contains any characters which would require CDATA wrapping. + * + * @param string $val + * + * @return Boolean + */ + private function needsCdataWrapping($val) + { + return preg_match('/[<>&]/', $val); + } /** * Tests the value being passed and decide what sort of element to create