byjg/anydataset-xml

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

Maintainers

👁 byjg

Package info

github.com/byjg/php-anydataset-xml

pkg:composer/byjg/anydataset-xml

Fund package maintenance!

byjg

Statistics

Installs: 8 458

Dependents: 1

Suggesters: 0

Stars: 2

Open Issues: 0

6.0.0 2025-11-24 18:05 UTC

Requires

Requires (Dev)

Suggests

None

Conflicts

None

Replaces

None

MIT 07b466affd8d098e2626384cbfcf66ada33afd06

This package is auto-updated.

Last update: 2026-06-10 18:31:06 UTC


README

sidebar_key anydataset-xml
tags
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