2017 © Pedro Peláez
 

library laravel-xml

Laravel XML Support

image

bmatovu/laravel-xml

Laravel XML Support

  • Friday, July 13, 2018
  • by bmatovu
  • Repository
  • 1 Watchers
  • 2 Stars
  • 17 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 8 Versions
  • 0 % Grown

The README.md

Laravel XML Support Package

, (*1)

Total Downloads Latest Stable Version License Quality Coverage Unit Tests Documentation, (*2)

This package comes with the much desired xml support for you Laravel project., (*3)

Supports: Laravel versions v5.3 and above, (*4)

Installation

composer require bmatovu/laravel-xml

Requests

Get the request content (body)., (*5)

$request->xml();

* Returns Bmatovu\LaravelXml\Support\XMLElement object., (*6)

Determine if the request content type is XML., (*7)

$request->sentXml();

Determine if the current request is accepting XML., (*8)

$request->wantsXml();

Validate XML content, (*9)

$isValid = Xml::is_valid($request->xml());

if (! $isValid) {
    return response()->xml(['message' => 'The given data was malformed.'], 400);
}

Validation - Against XML Schema Definition, (*10)

$errors = Xml::validate($request->xml(), 'path_to/sample.xsd');

if ($errors) {
    return response()->xml([
        'message' => 'The given data was invalid.',
        'errors' => $errors,
    ], 422);
}

Responses

Route::get('/users/{user}', function (Request $request, int $userId) {
    $user = User::findOrFail($userId);

    return response()->xml($user);
});
<?xml version="1.0" encoding="UTF-8"?>
<document>
    <id>1</id>
    <name>jdoe</name>
    <email>jdoe@example.com</email>
</document>
Route::get('/users/{user}', function (Request $request, int $userId) {
    $user = User::findOrFail($userId);

    return response()->xml(['user' => $user->toArray()]);
});
<?xml version="1.0" encoding="UTF-8"?>
<document>
    <user>
        <id>1</id>
        <name>jdoe</name>
        <email>jdoe@example.com</email>
    </user>
</document>
Route::get('/users/{user}', function (Request $request, int $userId) {
    $user = User::findOrFail($userId);

    return response()->xml($user, 200, [], ['root' => 'user']);
});
<?xml version="1.0" encoding="UTF-8"?>
<user>
    <id>1</id>
    <name>jdoe</name>
    <email>jdoe@example.com</email>
</user>
Route::get('/users', function () {
    $users = User::get();

    return response()->xml(['users' => $users->toArray()]);
});
<?xml version="1.0" encoding="UTF-8"?>
<document>
    <users>
        <id>1</id>
        <name>John Doe</name>
        <email>jdoe@example.com</email>
    </users>
    <users>
        <id>2</id>
        <name>Gary Plant</name>
        <email>gplant@example.com</email>
    </users>
</document>

And will automatically set the content type to xml, (*11)

Content-Type → text/xml; charset=UTF-8, (*12)

Middleware

First register the middleware in app\Http\Kernel.php, (*13)

protected $routeMiddleware = [
    // ...
    'xml' => \Bmatovu\LaravelXml\Http\Middleware\RequireXml::class,
];

Then use the middleware on your routes, or in the controllers., (*14)

Route::post('/users', function (Request, $request) {
    // do something...
})->middleware('xml');

This middleware only checks the Content-Type by defaul;, (*15)

[415 - Unsupported Media Type], (*16)

<?xml version="1.0" encoding="UTF-8"?>
<document>
    <message>Only accepting content of type XML.</message>
</document>

To check is the passed content is valid XML, pass a bool to the middleware, (*17)

Route::post('/users', function (Request, $request) {
    // do something...
})->middleware('xml:1');

[400 - Bad Request], (*18)

<?xml version="1.0" encoding="UTF-8"?>
<document>
    <message>The given data was malformed.</message>
</document>

Utilities

Encode: Array to Xml, (*19)

Xml::encode(['key' => 'value']);

Or, (*20)

xml_encode(['key' => 'value']);

Decode: Xml to Array, (*21)

Xml::decode('<?xml version="1.0" encoding="UTF-8"?><document><key>value</key></document>');

Or, (*22)

xml_decode('<?xml version="1.0" encoding="UTF-8"?><document><key>value</key></document>');

Credits

Under the hood, I'm using;, (*23)

Spatie's array to XML convernsion, (*24)

Hakre's XML to JSON conversion, (*25)

Akande's XML validation, (*26)

Reporting bugs

If you've stumbled across a bug, please help us by leaving as much information about the bug as possible, e.g., (*27)

  • Steps to reproduce
  • Expected result
  • Actual result

This will help us to fix the bug as quickly as possible, and if you do wish to fix it yourself; feel free to fork the package on GitHub and submit a pull request!, (*28)

The Versions

13/07 2018

dev-master

9999999-dev https://github.com/mtvbrianking/laravel-xml

Laravel XML Support

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel middleware xml response support package

13/07 2018

1.0.6

1.0.6.0 https://github.com/mtvbrianking/laravel-xml

Laravel XML Support

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel middleware xml response support package

13/07 2018

1.0.5

1.0.5.0 https://github.com/mtvbrianking/laravel-xml

Laravel XML Support

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel middleware xml response support package

13/07 2018

1.0.4

1.0.4.0 https://github.com/mtvbrianking/laravel-xml

Laravel XML Support

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel middleware xml response support package

04/07 2018

1.0.3

1.0.3.0 https://github.com/mtvbrianking/laravel-xml

Laravel XML Support

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel middleware xml response support package

04/07 2018

1.0.2

1.0.2.0 https://github.com/mtvbrianking/laravel-xml

Laravel XML Support

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel middleware xml response support package

03/07 2018

1.0.1

1.0.1.0 https://github.com/mtvbrianking/laravel-xml

Laravel XML Support

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel middleware xml response support package

02/07 2018

1.0.0

1.0.0.0 https://github.com/mtvbrianking/laravel-xml

Laravel XML Support

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel middleware xml response support package