да json кодировать / декодировать не нужно, как указано выше $ data = (array) simplexml_load_string ($ xml);

лкивался с этой функцией преобразования объекта SimpleXML в массивВот:

/**
 * function object2array - A simpler way to transform the result into an array 
 *   (requires json module).
 *
 * This function is part of the PHP manual.
 *
 * The PHP manual text and comments are covered by the Creative Commons 
 * Attribution 3.0 License, copyright (c) the PHP Documentation Group
 *
 * @author  Diego Araos, diego at klapmedia dot com
 * @date    2011-02-05 04:57 UTC
 * @link    http://www.php.net/manual/en/function.simplexml-load-string.php#102277
 * @license http://www.php.net/license/index.php#doc-lic
 * @license http://creativecommons.org/licenses/by/3.0/
 * @license CC-BY-3.0 <http://spdx.org/licenses/CC-BY-3.0>
 */
function object2array($object)
{
    return json_decode(json_encode($object), TRUE); 
}

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

function xmlstring2array($string)
{
    $xml   = simplexml_load_string($string, 'SimpleXMLElement', LIBXML_NOCDATA);

    $array = json_decode(json_encode($xml), TRUE);

    return $array;
}

Это работает довольно хорошо, но кажется немного хакерским? Есть ли более эффективный / надежный способ сделать это?

Я знаю, что объект SimpleXML достаточно близок к массиву, потому что он использует интерфейс ArrayAccess в PHP, но он по-прежнему не очень подходит для использования в качестве массива с многомерными массивами, т. Е. Зацикливанием.

Спасибо всем за любую помощь

Ответы на вопрос(2)

Ваш ответ на вопрос