noki/laravel-xml-converter
最新稳定版本:v1.0.3
Composer 安装命令:
composer require noki/laravel-xml-converter
包简介
Laravel XML Converter is Laravel package for converting XML to JSON and XML to array.
README 文档
README
🧾 Introduction
Since I started working with Laravel, I always wanted a simple helper that could convert XML files to JSON.
I created the first version of this package to do exactly that. While the package isn't perfect, it can handle a wide range of XML inputs. If you find any issues, feel free to report them.
I should note that this package was created with the help of AI. In my case, I used ChatGPT, and it saved me many hours of coding.
❓ What does this package do?
This package provides a flexible and powerful way to convert XML strings to JSON or PHP arrays. It supports:
- DTD and XSD validation
- Namespace tagging
- CDATA handling
🚀 Installation
Requirements
- PHP >= 8.1
- Laravel >= 9
- PHP Extensions:
simplexmllibxmldom
Composer Installation
composer require noki/laravel-xml-converter
⚙️ PHP Extensions Setup
Linux (Debian/Ubuntu)
sudo apt-get update sudo apt-get install php-simplexml php-xml php-dom
Example for PHP 8.3 — be sure to use the correct package names:
First, check your PHP version:
php -v
Then install extensions for your version:
sudo apt-get install php8.3-simplexml php8.3-xml php8.3-dom
macOS (with Homebrew)
brew install php
# OR, if PHP is already installed:
brew reinstall php
Required extensions (
simplexml,libxml,dom) are bundled with PHP on macOS.
Windows
- Open your
php.inifile. - Ensure the following lines are uncommented (remove the
;at the beginning):
extension=simplexml extension=dom extension=libxml
- Restart your web server (Apache, Nginx) or PHP-FPM.
📦 Usage
Namespace
use Noki\XmlConverter\Convert;
1. Convert XML to JSON
$json = Convert::xmlToJson($xmlString);
2. Convert XML to array
$array = Convert::xmlToArray($xmlString);
3. Full control with options
$array = Convert::xmlToArray( $xmlString, namespace_in_tag_name: true, is_cdata: true, schema_path: '/path/to/schema.xsd' // or '' to enable DTD validation );
namespace_in_tag_name: If true, keys will include namespace prefixes (e.g.,ns:tag).is_cdata: If true, CDATA sections are preserved as-is.schema_path:- Path to an
.xsdfile for XSD validation. - Use
''(empty string) to enable DTD validation (your XML must contain<!DOCTYPE ...>). - Use
nullto skip validation.
- Path to an
4. Convert XML to JSON with options
$json = Convert::xmlToJson( $xmlString, namespace_in_tag_name: true, is_cdata: false, schema_path: null );
🧪 Example
Sample XML with namespaces and CDATA
$xml = <<<XML <book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="book.xsd"> <title><![CDATA[The Great Gatsby]]></title> <author>F. Scott Fitzgerald</author> <year>1925</year> </book> XML; $json = Convert::xmlToJson($xml, true, true, '/path/to/book.xsd');
🛠 Error Handling
- If the XML is invalid, an
InvalidArgumentExceptionwill be thrown. - If schema validation fails, a descriptive exception is thrown (with optional logging).
- CDATA sections and empty tags are handled gracefully.
🧩 Integration with Laravel
You can use this package in controllers, services, or jobs:
use Noki\XmlConverter\Convert; $data = Convert::xmlToArray($request->getContent(), true);
📄 License
MIT License. See LICENSE.md for details.
🙌 Contributing
Feel free to fork and submit a PR! Bug reports and feature requests are always welcome.
🔗 Author
📝 Changelog
Please see CHANGELOG.md for recent updates.
统计信息
- 总下载量: 333
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 32
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-08-31