Преобразование массива array в XML (Array to XML PHP)

Бывает, что приходится отойти от формата json в сторону XML, однако простой функции, наподобии json_encode для подобных манипуляций с XML пока нет.

На stackoverflow нашел замечательную функцию, которая работает с вложенными массивами.

И результат выполнения:

UPD 20.02.2015
Предложен упрощенный вариант в комментариях, спасибо Szen


Комментарии к Преобразование массива array в XML (Array to XML PHP) (3)

  • Szen

    я бы немного упростил и оптимизировал код:

    function xml_encode ($array, $node = null) {
    if (!isset($node)) $node = new SimpleXMLElement(»);
    foreach ($array as $key => $value) {
    if (is_numeric($key)) $key = ‘item’ . $key;
    if (is_array($value)) {
    $subnode = $node->addChild($key);
    $node = $this->xml_encode($array, $subnode);
    } else {
    $node->addChild($key, $value);
    }
    }
    return $node->asXML();
    }

    Ответить

  • Antu Antu

    Какие-то блоки item не понятно зачем они гораздо проще.

    $xml_data = new SimpleXMLElement('');

    function to_xml(&$object, $data) {
    foreach($data as $key => $value) {
    if(is_array($value)) {
    if(!is_numeric($key)){
    $subnode = $object->addChild("$key");
    self::to_xml($subnode,$value);
    }
    else{
    self::to_xml($object,$value);
    }
    }
    else {
    $object->addChild("$key","$value");
    }
    }
    }

    $result = $xml_data->asXML();

    Ответить

  • Antu Antu

    Какие-то блоки item не понятно зачем они гораздо проще.

    $xml_data = new SimpleXMLElement(»);

    function to_xml(&$object, $data) {
    foreach($data as $key => $value) {
    if(is_array($value)) {
    if(!is_numeric($key)){
    $subnode = $object->addChild(«$key»);
    self::to_xml($subnode,$value);
    }
    else{
    self::to_xml($object,$value);
    }
    }
    else {
    $object->addChild(«$key»,»$value»);
    }
    }
    }

    $result = $xml_data->asXML();

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*
*