kenlog/converter

Simple converter from XML to CSV or JSON or Array

Fund package maintenance!
Liberapay
paypal.me/kenlog

Installs: 1 223

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 1

Forks: 0

pkg:composer/kenlog/converter

dev-master 2025-12-03 09:19 UTC

This package is auto-updated.

Last update: 2025-12-03 09:19:07 UTC


README

GitHub Packagist Downloads

Converter 📄 🔄 📃

Simple converter from XML to CSV or JSON or Array.

Requirements

  • PHP >= 7.4
  • ext-simplexml enabled

Getting Started

Install with composer

By default composer will download the latest stable version.

composer require kenlog/converter

Usage – examples

Example conversion to CSV

<?php

require 'vendor/autoload.php';

use Kenlog\Converter;

// @constructor new Converter(string $xmlFilePath);
$converterCSV = new Converter('products.xml');

// @method setCSV(string $csv, string $xpath, array $columns, string $separator = ',', int $skipLines = 0);
$success = $converterCSV->setCSV(
    'products.csv',
    '//Product',
    ['Code', 'Description', 'Um', 'Qty']
);

// you can use the return value...
if ($success) {
    echo 'The XML file has been converted to CSV' . PHP_EOL;
} else {
    echo 'The XML file was not converted to CSV' . PHP_EOL;
}

// ...or check the last operation status:
if ($converterCSV->isSuccess()) {
    // last operation was successful
}

Example conversion to JSON

<?php

require 'vendor/autoload.php';

use Kenlog\Converter;

// @constructor new Converter(string $xmlFilePath);
$converterJSON = new Converter('products.xml');

// @method setJSON(string $jsonFile);
if ($converterJSON->setJSON('products.json')) {
    echo 'The XML file has been converted to JSON' . PHP_EOL;
} else {
    echo 'The XML file was not converted to JSON' . PHP_EOL;
}

// Or using the status flag:
if ($converterJSON->isSuccess()) {
    // last operation was successful
}

Example conversion to Array

<?php

require 'vendor/autoload.php';

use Kenlog\Converter;

// @constructor new Converter(string $xmlFilePath);
$converterArray = new Converter('products.xml');

// @method getArray(): array;
$products = $converterArray->getArray();

// The result will be an array containing all records.
// Example assuming XML structure with <Product> nodes:
if (isset($products['Product']) && is_array($products['Product'])) {
    foreach ($products['Product'] as $product) {
        echo $product['Code'] . PHP_EOL;
        echo $product['Description'] . PHP_EOL;
        echo $product['Um'] . PHP_EOL;
        echo $product['Qty'] . PHP_EOL;
    }
}

API Overview

namespace Kenlog;

final class Converter
{
    public function __construct(string $xmlFilePath);

    public function setCSV(
        string $csv,
        string $xpath,
        array $columns,
        string $separator = ',',
        int $skipLines = 0
    ): bool;

    public function setJSON(string $jsonFile): bool;

    public function getArray(): array;

    public function isSuccess(): bool;

    public function getXml(): ?\SimpleXMLElement;
}
  • setCSV() Converts selected XML nodes (matched by $xpath) to a CSV file.

    • $columns is the list of elements/fields to extract for each node.
    • $skipLines lets you skip the first N logical nodes.
  • setJSON() Serializes the loaded XML to JSON and writes it to the given file.

  • getArray() Converts the loaded XML to a PHP array. Returns an empty array if XML is not loaded.

  • isSuccess() Returns the status of the last operation (setCSV() or setJSON()).

  • getXml() Returns the underlying SimpleXMLElement instance or null if XML was not loaded.

👷 Any contribution will be highly appreciated

Clone the repository:

git clone https://github.com/kenlog/converter.git

🐛 Issues

Please create an issue for any bugs you've found.

Author

License

This project is licensed under the MIT License - see the LICENSE.md file for details.