PHPackages                             larataj/laravel-xml-helpers - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. larataj/laravel-xml-helpers

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

larataj/laravel-xml-helpers
===========================

Powerful, lightweight Laravel XML &amp; JSON helpers library. Convert arrays to XML, return XML responses, and generate standardized JSON API responses with ease.

2.1.2(5mo ago)12MITPHPPHP ^7.4|^8.0|^8.4

Since Jan 7Pushed 5mo ago1 watchersCompare

[ Source](https://github.com/Muhammad-developer/laravel-xml-helper)[ Packagist](https://packagist.org/packages/larataj/laravel-xml-helpers)[ Docs](https://github.com/larataj/xml-helpers)[ RSS](/packages/larataj-laravel-xml-helpers/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (5)Dependencies (3)Versions (6)Used By (0)

Laravel XML &amp; JSON Helpers
==============================

[](#laravel-xml--json-helpers)

**English version** | [Русская версия](#%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B0%D1%8F-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F)

---

English Version
---------------

[](#english-version)

**Laravel XML &amp; JSON Helpers** is a powerful, lightweight, and easy-to-use library for Laravel that helps you:

- Convert arrays to XML with ease
- Return XML responses in Laravel controllers
- Generate standardized JSON API responses (success, errors, pagination, and more)
- Work with XML and JSON seamlessly

### Features

[](#features)

✅ **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+

### Installation

[](#installation)

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,
],
```

---

### XML: Usage Guide

[](#xml-usage-guide)

#### 1. Convert Array to XML

[](#1-convert-array-to-xml)

```
use Larataj\XmlHelpers\ResponseHelper;

$array = [
    'name' => 'John Doe',
    'email' => 'john.doe@example.com',
    'roles' => ['admin', 'editor'],
];

$xml = ResponseHelper::arrayToXml($array);
echo $xml;
```

**Output:**

```

  John Doe
  john.doe@example.com

    admin
    editor

```

---

#### 2. Return XML Response in Laravel

[](#2-return-xml-response-in-laravel)

```
use Larataj\XmlHelpers\ResponseHelper;

return ResponseHelper::xml([
    'status' => 'success',
    'message' => 'Data processed successfully',
    'data' => ['id' => 123, 'name' => 'John Doe'],
]);
```

---

#### 3. Using the `response()->xml()` Macro

[](#3-using-the-response-xml-macro)

```
return response()->xml([
    'status' => 'success',
    'data' => ['id' => 123, 'name' => 'John Doe'],
]);
```

---

### JSON API: Using `ApiResponse`

[](#json-api-using-apiresponse)

This library includes a convenient helper for generating standardized JSON responses.

```
use Larataj\XmlHelpers\Response\ApiResponse;
```

#### Success Response

[](#success-response)

```
return ApiResponse::success(['message' => 'OK']);
```

#### Created Response (201)

[](#created-response-201)

```
return ApiResponse::created($user);
```

#### Delete Resource

[](#delete-resource)

```
return ApiResponse::deleted();
```

#### Error Responses

[](#error-responses)

```
return ApiResponse::error(['email' => 'Email is already taken']);
return ApiResponse::error('An error occurred');
```

#### Pagination

[](#pagination)

```
return ApiResponse::paginated($users, UserResource::class);
```

#### Ready-to-use HTTP Status Codes

[](#ready-to-use-http-status-codes)

```
ApiResponse::unauthorized(); // 401
ApiResponse::forbidden();    // 403
ApiResponse::notFound();     // 404
ApiResponse::serverError();  // 500
ApiResponse::noContent();    // 204
```

### Example Routes for Testing

[](#example-routes-for-testing)

```
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(),
    ]);
});
```

---

Advanced Usage
--------------

[](#advanced-usage)

### Using XmlBuilder for Complex XML

[](#using-xmlbuilder-for-complex-xml)

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
```

### Parsing XML with XmlParser

[](#parsing-xml-with-xmlparser)

Parse and query XML documents easily:

```
use Larataj\XmlHelpers\XmlParser;

// Parse XML string
$parser = new XmlParser('Test');

// 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();
```

### Using Response Macros

[](#using-response-macros)

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());
```

---

Requirements
------------

[](#requirements)

- **PHP**: 7.4, 8.0, 8.1, 8.2, 8.3, 8.4+
- **Laravel**: 5.5, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0+

---

License
-------

[](#license)

This package is licensed under the [MIT License](https://opensource.org/licenses/MIT).

**Author:** [Muhammad Vafoev](mailto:muhammadjonvafoev@gmail.com)

---

Contributing
------------

[](#contributing)

We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

---

---

Русская версия
--------------

[](#русская-версия)

**Laravel XML &amp; JSON Helpers**

Установка
---------

[](#установка)

Установите пакет через Composer:

```
composer require larataj/xml-helpers
```

Laravel автоматически зарегистрирует провайдер благодаря **автодетекту**.
Если вы используете Laravel ниже 5.5, добавьте вручную:

```
// config/app.php
'providers' => [
    Larataj\XmlHelpers\HelpersServiceProvider::class,
],
```

---

XML: Использование
------------------

[](#xml-использование)

### 1. Преобразование массива в XML

[](#1-преобразование-массива-в-xml)

```
use Larataj\XmlHelpers\ResponseHelper;

$array = [
    'name' => 'John Doe',
    'email' => 'john.doe@example.com',
    'roles' => ['admin', 'editor'],
];

$xml = ResponseHelper::arrayToXml($array);
echo $xml;
```

**Результат:**

```

  John Doe
  john.doe@example.com

    admin
    editor

```

---

### 2. Возврат XML-ответа в Laravel

[](#2-возврат-xml-ответа-в-laravel)

```
use Larataj\XmlHelpers\ResponseHelper;

return ResponseHelper::xml([
    'status' => 'success',
    'message' => 'Данные обработаны',
    'data' => ['id' => 123, 'name' => 'John Doe'],
]);
```

---

### 3. Использование макроса `response()->xml()`

[](#3-использование-макроса-response-xml)

```
return response()->xml([
    'status' => 'success',
    'data' => ['id' => 123, 'name' => 'John Doe'],
]);
```

---

JSON API: Использование `ApiResponse`
-------------------------------------

[](#json-api-использование-apiresponse)

Библиотека включает удобный хелпер для формирования стандартизированных JSON-ответов.

```
use Larataj\XmlHelpers\Response\ApiResponse;
```

---

### Успешный ответ

[](#успешный-ответ)

```
return ApiResponse::success(['message' => 'OK']);
```

### Ответ `201 Created`

[](#ответ-201-created)

```
return 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

[](#использование-xmlbuilder-для-сложного-xml)

Класс `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 с XmlParser

[](#парсинг-xml-с-xmlparser)

Легко парсьте и запрашивайте XML-документы:

```
use Larataj\XmlHelpers\XmlParser;

// Парсинг XML-строки
$parser = new XmlParser('Тест');

// Преобразование в массив
$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();
```

### Использование макросов Response

[](#использование-макросов-response)

Вы также можете использовать удобные макросы:

```
// Простой 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());
```

---

Требования
----------

[](#требования)

- **PHP**: 7.4, 8.0, 8.1, 8.2, 8.3, 8.4+
- **Laravel**: 5.5, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0+

---

Лицензия
--------

[](#лицензия)

Пакет распространяется под лицензией [MIT](https://opensource.org/licenses/MIT).

Автор: [Muhammad Vafoev](mailto:muhammadjonvafoev@gmail.com)

---

Содействие
----------

[](#содействие)

Мы приветствуем вклад! Пожалуйста, ознакомьтесь с [CONTRIBUTING.md](CONTRIBUTING.md) для получения рекомендаций.

---

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance70

Regular maintenance activity

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~79 days

Total

5

Last Release

175d ago

Major Versions

1.0.3 → 2.0.02025-03-25

PHP version history (2 changes)v1.0.1PHP ^7.4|^8.0

2.1.2PHP ^7.4|^8.0|^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/f08ed1fb5f876d576ab6e637ac73ebbdef9a2dd94258ee6546c44ffbfcd03821?d=identicon)[Muhammad-developer](/maintainers/Muhammad-developer)

---

Top Contributors

[![Muhammad-developer](https://avatars.githubusercontent.com/u/71689185?v=4)](https://github.com/Muhammad-developer "Muhammad-developer (20 commits)")

---

Tags

responsejsonlaravelxmlhelperslightweightREST APIarray-to-xmljson-parserxml-parserlaravel-apilaravel-xmlapi-responseApi Helpereasy to uselaravel jsonxml responseresponse builderxml converterlaravel-xml-helper

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/larataj-laravel-xml-helpers/health.svg)

```
[![Health](https://phpackages.com/badges/larataj-laravel-xml-helpers/health.svg)](https://phpackages.com/packages/larataj-laravel-xml-helpers)
```

###  Alternatives

[bmatovu/laravel-xml

Laravel XML Support

91270.4k](/packages/bmatovu-laravel-xml)[ultrono/laravel-sitemap

Sitemap generator for Laravel 11, 12 and 13

36412.6k6](/packages/ultrono-laravel-sitemap)[sbsaga/toon

🧠 TOON for Laravel — a compact, human-readable, and token-efficient data format for AI prompts &amp; LLM contexts. Perfect for ChatGPT, Gemini, Claude, Mistral, and OpenAI integrations (JSON ⇄ TOON).

6115.6k](/packages/sbsaga-toon)[danharper/laravel-jsonx

Add XML support to a JSON-speaking Laravel API with a single middleware via JSONx

1857.2k](/packages/danharper-laravel-jsonx)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
