Looking to hire Laravel developers? Try LaraJobs

laravel-xml-converter maintained by noki

Description
Laravel XML Converter is Laravel package for converting XML to JSON and XML to array.
Authors
Novak Urosevic - ChatGpt
Last update
2025/09/18 17:48 (dev-main)
License
Downloads
1 149

Comments
comments powered by Disqus

Laravel XML Converter Package

🧾 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:
    • simplexml
    • libxml
    • dom

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

  1. Open your php.ini file.
  2. Ensure the following lines are uncommented (remove the ; at the beginning):
extension=simplexml
extension=dom
extension=libxml
  1. 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 .xsd file for XSD validation.
    • Use '' (empty string) to enable DTD validation (your XML must contain <!DOCTYPE ...>).
    • Use null to skip validation.

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 InvalidArgumentException will 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.