diff --git a/lib/internal/Magento/Framework/Webapi/Rest/Response/Renderer/Xml.php b/lib/internal/Magento/Framework/Webapi/Rest/Response/Renderer/Xml.php
index b4cfc61611a93..f25cd219e3eae 100644
--- a/lib/internal/Magento/Framework/Webapi/Rest/Response/Renderer/Xml.php
+++ b/lib/internal/Magento/Framework/Webapi/Rest/Response/Renderer/Xml.php
@@ -7,6 +7,9 @@
*/
namespace Magento\Framework\Webapi\Rest\Response\Renderer;
+/**
+ * Renders response data in Xml format.
+ */
class Xml implements \Magento\Framework\Webapi\Rest\Response\RendererInterface
{
/**
@@ -111,8 +114,7 @@ protected function _formatValue($value)
/** Without the following transformation boolean values are rendered incorrectly */
$value = $value ? 'true' : 'false';
}
- $replacementMap = ['&' => '&'];
- return str_replace(array_keys($replacementMap), array_values($replacementMap), $value);
+ return (string) $value;
}
/**
diff --git a/lib/internal/Magento/Framework/Webapi/Test/Unit/Rest/Response/Renderer/XmlTest.php b/lib/internal/Magento/Framework/Webapi/Test/Unit/Rest/Response/Renderer/XmlTest.php
index 396fbcdb1978b..71fb41491cc74 100644
--- a/lib/internal/Magento/Framework/Webapi/Test/Unit/Rest/Response/Renderer/XmlTest.php
+++ b/lib/internal/Magento/Framework/Webapi/Test/Unit/Rest/Response/Renderer/XmlTest.php
@@ -76,6 +76,11 @@ public function providerXmlRender()
'value',
'Invalid XML render with numeric symbol in data index.'
],
+ [
+ ['key' => 'test & foo'],
+ 'test & foo',
+ 'Invalid XML render with ampersand symbol in data index.'
+ ],
[
['.key' => 'value'],
'value',