Как конвертировать array в xml на laravel?

Пользователь

от autumn_parker , в категории: PHP , 2 года назад

Как конвертировать array в xml на laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от william_stoltenberg , 2 года назад

@autumn_parker 

В Laravel можно использовать класс SimpleXMLElement для создания XML-файла из массива. Для этого можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
use IlluminateSupportFacadesResponse;
use IlluminateSupportFacadesFile;

$array = [
    'name' => 'John Doe',
    'age' => 30,
    'email' => '[email protected]'
];

$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($array, function ($value, $key) use ($xml) {
    $xml->addChild($key, $value);
});

$file_name = 'data.xml';
$file_path = storage_path($file_name);
File::put($file_path, $xml->asXML());

return Response::download($file_path, $file_name);


В этом примере создается простой массив $array, затем создается объект SimpleXMLElement с корневым элементом <root/>. Затем мы используем функцию array_walk_recursive, чтобы перебрать все элементы массива и добавить их как дочерние элементы к нашему корневому элементу. Наконец, мы сохраняем XML-файл на диск и отправляем его пользователю для загрузки с помощью функции Response::download.


Обратите внимание, что перед использованием функций File и Response необходимо добавить соответствующие импорты. Также не забудьте проверить права доступа к файловой системе, чтобы убедиться, что ваш скрипт имеет права на запись в папку назначения.

Пользователь

от ludie , 10 месяцев назад

@autumn_parker 

Для конвертирования массива в XML в Laravel вы можете использовать встроенные средства работы с XML, такие как класс SimpleXMLElement. Вот пример кода, который конвертирует массив в XML и сохраняет его в файл:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use IlluminateSupportFacadesFile;

$array = [
    'name' => 'John Doe',
    'age' => 30,
    'email' => '[email protected]'
];

$xml = new SimpleXMLElement('<root/>');
array_walk_recursive($array, function ($value, $key) use ($xml) {
    $xml->addChild($key, $value);
});

$file_path = storage_path('data.xml');
$xml->asXML($file_path);

return response()->download($file_path);


В этом примере мы создаем объект SimpleXMLElement с корневым элементом <root/>. Затем мы используем функцию array_walk_recursive, чтобы перебрать все элементы массива и добавить их как дочерние элементы к нашему корневому элементу. После этого мы сохраняем XML-файл с помощью метода asXML и передаем путь к файлу, в котором мы хотим сохранить XML.


Наконец, мы возвращаем ответ пользователю с помощью функции response()->download, чтобы пользователь мог скачать созданный файл. Обратите внимание, что перед использованием функций File и response, необходимо добавить соответствующие импорты из пространства имен IlluminateSupportFacadesFile и IlluminateSupportFacadesResponse.