vmporcayom/laravel-xml

支持 Laravel XML 的 Tramite 标签

v3.0.0 2020-09-13 09:12 UTC

This package is auto-updated.

Last update: 2024-09-29 06:09:03 UTC


README

Code Quality Code Style Total Downloads Latest Stable Version License Documentation

此包为您的 Laravel 项目提供了所需的所有 xml 支持,包括仅接受 xml 请求的中介件、http 响应以 xml 格式,以及 xml 转换和验证的更多实用工具。

支持: Laravel 版本 v5.3 及以上

安装

$ composer require bmatovu/laravel-xml

请求

获取请求内容(主体)。

$request->xml();

* 返回 Bmatovu\LaravelXml\Support\XMLElement 对象。

确定请求内容类型是否为 XML。

$request->isXml();

确定当前请求是否接受 XML。

$request->wantsXml();

验证 XML 内容

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

验证 - 与 XML 模式定义(XSD)进行验证

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

if ($errors) {
    return response()->xml(['error' => $errors], 422);
}

响应

期望一个数组,将您的对象转换为数组...

Route::get('/users', function () {
    $users = App\User::all();
    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>
        <created_at>2018-07-12 17:06:13</created_at>
        <updated_at>2018-07-12 18:00:05</updated_at>
    </users>
    <users>
        <id>2</id>
        <name>Gary Plant</name>
        <email>gplant@example.com</email>
        <created_at>2018-07-12 18:02:26</created_at>
        <updated_at>2018-07-13 11:22:44</updated_at>
    </users>
</document>

并将自动设置内容类型为 xml

Content-Type → text/xml; charset=UTF-8

中介件

首先在 app\Http\Kernel.php 中注册中介件

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

然后在您的路由或控制器中使用中介件。

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

如果请求的 content-type 不是 xml,则响应将为;

[415 - 不支持的媒体类型]

<?xml version="1.0" encoding="UTF-8"?>
<document>
    <error>Only accepting xml content</error>
</document>

实用工具

编码:数组转 XML

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

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

解码:XML 转 数组

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

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

鸣谢

底层使用以下工具;

Spatie 的数组转 XML 转换

Hakre 的 XML 转 JSON 转换

Akande 的 XML 验证

报告错误

如果您发现了错误,请尽可能提供有关错误的详细信息,例如。

  • 重现步骤
  • 预期结果
  • 实际结果

这将帮助我们尽快修复错误,如果您愿意自行修复;请自由地在 GitHub 上分支包并提交拉取请求!