Powerful, lightweight Laravel XML & JSON helpers library. Convert arrays to XML, return XML responses, and generate standardized JSON API responses with ease.
larataj/laravel-xml-helpers is a Laravel package for powerful, lightweight laravel xml & json helpers library. convert arrays to xml, return xml responses, and generate standardized json api responses with ease..
It currently has 1 GitHub stars and 2 downloads on Packagist (latest version 2.1.2).
Install it with composer require larataj/laravel-xml-helpers.
Discover more Laravel packages by larataj
or browse all Laravel packages to compare alternatives.
Last updated
English version | Русская версия
Laravel XML & JSON Helpers is a powerful, lightweight, and easy-to-use library for Laravel that helps you:
✅ Simple XML Conversion - Convert arrays to XML in one line ✅ Lightweight - Minimal dependencies, optimized for performance ✅ Easy Integration - Works seamlessly with Laravel 5.5+ ✅ Standardized API Responses - Build consistent JSON responses ✅ Pagination Support - Easy pagination for API resources ✅ Multiple HTTP Status Codes - Handle 200, 201, 204, 401, 403, 404, 500 and more ✅ Framework Auto-discovery - Automatic registration with Laravel 5.5+
Install the package via Composer:
composer require larataj/xml-helpers
Laravel will automatically register the service provider thanks to package auto-discovery. If you're using Laravel below 5.5, add it manually:
// config/app.php
'providers' => [
Larataj\XmlHelpers\HelpersServiceProvider::class,
],
use Larataj\XmlHelpers\ResponseHelper;
$array = [
'name' => 'John Doe',
'email' => '[email protected]',
'roles' => ['admin', 'editor'],
];
$xml = ResponseHelper::arrayToXml($array);
echo $xml;
Output:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<name>John Doe</name>
<email>[email protected]</email>
<roles>
<item>admin</item>
<item>editor</item>
</roles>
</response>
use Larataj\XmlHelpers\ResponseHelper;
return ResponseHelper::xml([
'status' => 'success',
'message' => 'Data processed successfully',
'data' => ['id' => 123, 'name' => 'John Doe'],
]);
response()->xml() Macroreturn response()->xml([
'status' => 'success',
'data' => ['id' => 123, 'name' => 'John Doe'],
]);
ApiResponseThis library includes a convenient helper for generating standardized JSON responses.
use Larataj\XmlHelpers\Response\ApiResponse;
return ApiResponse::success(['message' => 'OK']);
return ApiResponse::created($user);
return ApiResponse::deleted();
return ApiResponse::error(['email' => 'Email is already taken']);
return ApiResponse::error('An error occurred');
return ApiResponse::paginated($users, UserResource::class);
ApiResponse::unauthorized(); // 401
ApiResponse::forbidden(); // 403
ApiResponse::notFound(); // 404
ApiResponse::serverError(); // 500
ApiResponse::noContent(); // 204
Route::get('/test-xml', function () {
return response()->xml([
'name' => 'Laravel',
'version' => '10.x',
'features' => ['fast', 'secure', 'elegant']
]);
});
Route::get('/test-json', function () {
return \Larataj\XmlHelpers\Response\ApiResponse::success([
'framework' => 'Laravel',
'version' => app()->version(),
]);
});
The XmlBuilder class provides a fluent interface for building complex XML documents:
use Larataj\XmlHelpers\XmlBuilder;
$xml = new XmlBuilder('catalog', ['id' => '1']);
$xml->addChild('product', [
'name' => 'Widget',
'price' => '19.99',
'stock' => '100'
])
->addChild('category', 'Electronics')
->addCData('description', 'A high-quality widget for your needs')
->addComment('Add more products as needed')
->addChild('tags', ['tag1' => 'new', 'tag2' => 'popular']);
echo $xml->toString(true); // true = formatted output
Parse and query XML documents easily:
use Larataj\XmlHelpers\XmlParser;
// Parse XML string
$parser = new XmlParser('<root><item><name>Test</name></item></root>');
// Convert to array
$array = $parser->toArray();
// Query using XPath
$items = $parser->query('//item');
// Get single element
$firstItem = $parser->queryOne('//item[1]');
// Check if element exists
if ($parser->has('//item[@id="5"]')) {
echo 'Item with id=5 found';
}
// Get pretty-printed XML
echo $parser->prettyPrint();
You can also use convenient response macros:
// Simple XML response
return response()->xml([
'status' => 'success',
'message' => 'Operation completed'
]);
// Using XML builder
$builder = response()->xmlBuilder('api-response', ['version' => '1.0']);
$builder->addChild('status', 'success')
->addChild('timestamp', now()->toIso8601String());
return response()->xml($builder->getXml()->asXML());
This package is licensed under the MIT License.
Author: Muhammad Vafoev
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Laravel XML & JSON Helpers
Установите пакет через Composer:
composer require larataj/xml-helpers
Laravel автоматически зарегистрирует провайдер благодаря автодетекту.
Если вы используете Laravel ниже 5.5, добавьте вручную:
// config/app.php
'providers' => [
Larataj\XmlHelpers\HelpersServiceProvider::class,
],
use Larataj\XmlHelpers\ResponseHelper;
$array = [
'name' => 'John Doe',
'email' => '[email protected]',
'roles' => ['admin', 'editor'],
];
$xml = ResponseHelper::arrayToXml($array);
echo $xml;
Результат:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<name>John Doe</name>
<email>[email protected]</email>
<roles>
<item>admin</item>
<item>editor</item>
</roles>
</response>
use Larataj\XmlHelpers\ResponseHelper;
return ResponseHelper::xml([
'status' => 'success',
'message' => 'Данные обработаны',
'data' => ['id' => 123, 'name' => 'John Doe'],
]);
response()->xml()return response()->xml([
'status' => 'success',
'data' => ['id' => 123, 'name' => 'John Doe'],
]);
ApiResponseБиблиотека включает удобный хелпер для формирования стандартизированных JSON-ответов.
use Larataj\XmlHelpers\Response\ApiResponse;
return ApiResponse::success(['message' => 'OK']);
201 Createdreturn ApiResponse::created($user);
return ApiResponse::deleted();
return ApiResponse::error(['email' => 'Email уже занят']);
return ApiResponse::error('Произошла ошибка');
return ApiResponse::paginated($users, UserResource::class);
ApiResponse::unauthorized(); // 401
ApiResponse::forbidden(); // 403
ApiResponse::notFound(); // 404
ApiResponse::serverError(); // 500
ApiResponse::noContent(); // 204
Route::get('/test-xml', function () {
return response()->xml([
'name' => 'Laravel',
'version' => '10.x',
'features' => ['fast', 'secure', 'elegant']
]);
});
Route::get('/test-json', function () {
return \Larataj\XmlHelpers\Response\ApiResponse::success([
'framework' => 'Laravel',
'version' => app()->version(),
]);
});
Класс XmlBuilder предоставляет удобный интерфейс для построения сложных XML-документов:
use Larataj\XmlHelpers\XmlBuilder;
$xml = new XmlBuilder('каталог', ['id' => '1']);
$xml->addChild('товар', [
'название' => 'Виджет',
'цена' => '19.99',
'количество' => '100'
])
->addChild('категория', 'Электроника')
->addCData('описание', 'Высокачественный виджет для ваших нужд')
->addComment('Добавьте больше товаров по необходимости')
->addChild('теги', ['тег1' => 'новое', 'тег2' => 'популярное']);
echo $xml->toString(true); // true = форматированный вывод
Легко парсьте и запрашивайте XML-документы:
use Larataj\XmlHelpers\XmlParser;
// Парсинг XML-строки
$parser = new XmlParser('<root><item><name>Тест</name></item></root>');
// Преобразование в массив
$array = $parser->toArray();
// Запрос с помощью XPath
$items = $parser->query('//item');
// Получение одного элемента
$firstItem = $parser->queryOne('//item[1]');
// Проверка существования элемента
if ($parser->has('//item[@id="5"]')) {
echo 'Товар с id=5 найден';
}
// Красиво отформатированный XML
echo $parser->prettyPrint();
Вы также можете использовать удобные макросы:
// Простой XML-ответ
return response()->xml([
'status' => 'success',
'message' => 'Операция выполнена'
]);
// Использование XML builder
$builder = response()->xmlBuilder('api-response', ['version' => '1.0']);
$builder->addChild('status', 'success')
->addChild('timestamp', now()->toIso8601String());
return response()->xml($builder->getXml()->asXML());
Пакет распространяется под лицензией MIT.
Автор: Muhammad Vafoev
Мы приветствуем вклад! Пожалуйста, ознакомьтесь с CONTRIBUTING.md для получения рекомендаций.