Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Конвертер массива в XML
class DataConverter {
static function array2Xml($array, $container = 'values')
{
if(!is_array($array)) {
throw new Exception('Param must be a array');
}
$xml = '';
foreach($array as $key => $value) {
if(is_integer($key)) {
$key = self::getEntityNameFromContainer($container);
}
$xml .= (is_array($value)) ? self::array2Xml($value, $key) : self::value2Xml($value, $key);
}
return self::value2Xml($xml,$container);
}
static function value2Xml($value, $container)
{
return '<'.$container.'>'.$value.'</'.$container.'>';
}
static function getEntityNameFromContainer($containerName, $default = 'entity')
{
if('s' == substr($containerName, -1)) {
return substr($containerName, 0, strlen($containerName) - 1);
}
if(strlen($containerName < 3)) {
return $default;
}
$ending = substr($containerName, -3);
if('ses' == $ending || 'oes' == $ending || 'xes' == $ending) {
return substr($containerName, 0, strlen($containerName) - 2);
}
if(strlen($containerName < 4)) {
return $default;
}
$ending = substr($containerName, -4);
if('shes' == $ending || 'ches' == $ending) {
return substr($containerName, 0, strlen($containerName) - 2);
}
return $default;
}
}
$arr = array(1, 'foos' => array(bar, 2));
echo DataConverter::array2xml($arr, 'childs');
class array2xml
{
protected $xml;
public function __construct( $elements, $rootnode = 'rootnode' )
{
$this->xml =new DOMDocument('1.0','iso-8859-1');
$rootElement=$this->xml->createElement($rootnode,'');
$this->xml->appendChild($rootElement);
$this->transform($rootElement, $elements);
}
protected function transform($currentNode, $elements)
{
if( is_array($elements))
{
foreach($elements as $key=>$value)
{
if(is_array($value))
{
$element=$this->xml->createElement($key,'');
$currentNode->appendChild($element);
$this->transform($element, $value);
}
else
{
$element=$this->xml->createElement($key,$value);
$currentNode->appendChild($element);
}
}
}
else
{
return false;
}
}
public function xml()
{
return $this->xml->saveXML();
}
}
.
Прокомментировать/Отблагодарить