byjg/anydataset-xml

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

Fund package maintenance!
byjg

Installs: 6 979

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 1

Forks: 1

Open Issues: 0

pkg:composer/byjg/anydataset-xml

6.0.0 2025-11-24 18:05 UTC

This package is auto-updated.

Last update: 2025-11-26 03:14:33 UTC


README

Sponsor Build Status Opensource ByJG GitHub source GitHub license GitHub release

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

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