Моя проблема описана здесь :
Обратите внимание, что хотя addChild () экранирует "<" и ">", он не экранирует амперсанд и "&".
Предлагаемое решение php.net (htmlentities или htmlcspecialchars) не очень хорошее, поэтому я пришел к тому, что предложил salathe:
<?php
class SimpleXMLExtended extends SimpleXMLElement // http://coffeerings.posterous.com/php-simplexml-and-cdata
{
public function addCData($cdata_text)
{
$node= dom_import_simplexml($this);
$no = $node->ownerDocument;
$node->appendChild($no->createCDATASection($cdata_text));
}
}
и вместо
$values->addChild('marque', '<![CDATA['.$product['manufacturer_name'].']]>');
использование:
$values->addChild('marque')->addCData($product['manufacturer_name']);
Вывод теперь <![CDATA[Cyril & Nathalie Daniel]]>