Автор оригинала: HraKK
Какой-нибудь простой быстрый конвертатор, желательно с таким интерфейсом
$xml = new Array2xml($array);
<?php
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');
То мы меньше чем за минуту изменим метод value2xml, чтобы он делал то, что нужноАвтор оригинала: BRat
korchasa
это какой-то совсем простой, а если в $value будет что-нибудь типа "<b>a</b>" ?)
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();
}
}
на вид строчек 20Не стыдно из-за 40 строчек на форум писать?
увольнять таких....Автор оригинала: HraKK
даю такую задачу пишут уже 2 месяц))
просто отсеивать при приеме на работу.увольнять таких....