b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / dev2.destoffenstraat.com / vendor / magento / framework / Xml /
Filename/home/dev2.destoffenstraat.com/vendor/magento/framework/Xml/Generator.php
Size3.87 kb
Permissionrw-r--r--
Ownerroot : root
Create time17-Aug-2025 10:26
Last modified07-Jan-2021 21:08
Last accessed23-Aug-2025 03:56
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\Xml;

class Generator
{
/**
* This value is used to replace numeric keys while formatting data for xml output.
*/
const DEFAULT_ENTITY_ITEM_NAME = 'item';

/**
* @var \DOMDocument|null
*/
protected $_dom = null;

/**
* @var \DOMDocument
*/
protected $_currentDom;

/**
* @var string
*/
protected $_defaultIndexedArrayItemName;

/**
*
*/
public function __construct()
{
$this->_dom = new \DOMDocument('1.0');
$this->_dom->formatOutput = true;
$this->_currentDom = $this->_dom;
return $this;
}

/**
* @return \DOMDocument|null
*/
public function getDom()
{
return $this->_dom;
}

/**
* @return \DOMDocument
*/
protected function _getCurrentDom()
{
return $this->_currentDom;
}

/**
* @param \DOMDocument $node
* @return $this
*/
protected function _setCurrentDom($node)
{
$this->_currentDom = $node;
return $this;
}

/**
* @param array $content
* @return $this
* @throws \DOMException
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function arrayToXml($content)
{
$parentNode = $this->_getCurrentDom();
if (!$content || !count($content)) {
return $this;
}
foreach ($content as $_key => $_item) {
$node = $this->getDom()->createElement(preg_replace('/[^\w-]/i', '', $_key));
$parentNode->appendChild($node);
if (is_array($_item) && isset($_item['_attribute'])) {
if (is_array($_item['_value'])) {
if (isset($_item['_value'][0])) {
foreach ($_item['_value'] as $_v) {
$this->_setCurrentDom($node)->arrayToXml($_v);
}
} else {
$this->_setCurrentDom($node)->arrayToXml($_item['_value']);
}
} else {
$child = $this->getDom()->createTextNode($_item['_value']);
$node->appendChild($child);
}
foreach ($_item['_attribute'] as $_attributeKey => $_attributeValue) {
$node->setAttribute($_attributeKey, $_attributeValue);
}
} elseif (is_string($_item)) {
$text = $this->getDom()->createTextNode($_item);
$node->appendChild($text);
} elseif (is_array($_item) && !isset($_item[0])) {
$this->_setCurrentDom($node)->arrayToXml($_item);
} elseif (is_array($_item) && isset($_item[0])) {
foreach ($_item as $v) {
$this->_setCurrentDom($node)->arrayToXml([$this->_getIndexedArrayItemName() => $v]);
}
}
}
return $this;
}

/**
* @return string
*/
public function __toString()
{
return $this->getDom()->saveXML();
}

/**
* @param string $file
* @return $this
*/
public function save($file)
{
$this->getDom()->save($file);
return $this;
}

/**
* Set xml node name to use instead of numeric index during numeric arrays conversion.
*
* @param string $name
* @return $this
*/
public function setIndexedArrayItemName($name)
{
$this->_defaultIndexedArrayItemName = $name;
return $this;
}

/**
* Get xml node name to use instead of numeric index during numeric arrays conversion.
*
* @return string
*/
protected function _getIndexedArrayItemName()
{
return $this->_defaultIndexedArrayItemName ?? self::DEFAULT_ENTITY_ITEM_NAME;
}
}