* @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class InstallSimplexmlElement extends SimpleXMLElement { /** * Can add SimpleXMLElement values in XML tree * * @see SimpleXMLElement::addChild() */ public function addChild($name, $value = null, $namespace = null) { if ($value instanceof SimplexmlElement) { $content = trim((string)$value); if (strlen($content) > 0) $new_element = parent::addChild($name, str_replace('&', '&', $content), $namespace); else { $new_element = parent::addChild($name); foreach ($value->attributes() as $k => $v) $new_element->addAttribute($k, $v); } foreach ($value->children() as $child) $new_element->addChild($child->getName(), $child); } else return parent::addChild($name, str_replace('&', '&', $value), $namespace); } /** * Generate nice and sweet XML * * @see SimpleXMLElement::asXML() */ public function asXML($filename = null) { $dom = new DOMDocument('1.0'); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML(parent::asXML()); if ($filename) return (bool)file_put_contents($filename, $dom->saveXML()); return $dom->saveXML(); } }