byjg/anydataset-xml

XML abstraction dataset for the AnyDataset library. AnyDataset is an agnostic data source abstraction layer in PHP.

Maintainers

Package info

github.com/byjg/php-anydataset-xml

pkg:composer/byjg/anydataset-xml

Fund package maintenance!

byjg

Statistics

Installs: 7 657

Dependents: 1

Suggesters: 0

Stars: 2

Open Issues: 0

6.0.0 2025-11-24 18:05 UTC

This package is auto-updated.

Last update: 2026-03-10 17:58:09 UTC


README

sidebar_key tags
anydataset-xml
php anydataset text-manipulation

AnyDataset-Xml

XML abstraction dataset for the AnyDataset library. AnyDataset is an agnostic data source abstraction layer in PHP.

Sponsor Build Status Opensource ByJG GitHub source GitHub license GitHub release

Features

  • Simple XML Processing: Process XML data with a clean, consistent API
  • XPath Support: Use XPath expressions to select nodes and attributes
  • Namespace Support: Full support for XML namespaces
  • Repeated Node Handling: Automatically handles repeated nodes by returning arrays
  • Custom Field Processing: Define custom field mappings with closures/callbacks
  • Flexible Input: Accept XML as string, DOMDocument, XmlNode, or File object
  • AnyDataset Integration: Compatible with the AnyDataset abstraction layer

Documentation

Installation

composer require "byjg/anydataset-xml"

Quick Example

<?php
$xml = file_get_contents('example.xml');

$dataset = new \ByJG\AnyDataset\Xml\XmlDataset(
    $xml,        // The XML string, can also be an XmlNode, DOMDocument, or File object
    "book",      // The node that represents a row
    [
        "category" => "@category",
        "title" => "title",
        "lang" => "title/@lang",
        "lang2" => function ($row) {
            return substr($row->get('lang'), 0, 2);
        }
    ] // Mapping columns
);

$iterator = $dataset->getIterator();
foreach ($iterator as $row) {
    echo $row->get('category'); // Print COOKING, CHILDREN, WEB
    echo $row->get('title');    // Print Everyday Italian, Harry Potter, Learning XML
    echo $row->get('lang');     // Print en-US, de-DE, pt-BR
    echo $row->get('lang2');    // Print en, de, pt
}

Dependencies

flowchart TD
    byjg/anydataset-xml --> byjg/anydataset
    byjg/anydataset-xml --> ext-dom
Loading

Running the Unit Tests

vendor/bin/phpunit

Open source ByJG