moccalotto/exemel

There is no license information available for the latest version (0.4.1) of this package.

Easyer reading and writing of XML documents

This package's canonical repository appears to be gone and the package has been frozen as a result. Email us for help if needed.

Maintainers

Package info

github.com/moccalotto/exemel

pkg:composer/moccalotto/exemel

Statistics

Installs: 1 819

Dependents: 1

Suggesters: 1

Stars: 1

Open Issues: 0

0.4.1 2016-07-30 09:54 UTC

This package is not auto-updated.

Last update: 2026-03-15 05:18:07 UTC


README

Build Status

Easily construct and modify XML documents using fluint API.

Installation

To add this package as a local, per-project dependency to your project, simply add a dependency on moccalotto/exemel to your project's composer.json file like so:

{
    "require": {
        "moccalotto/exemel": "~0.1"
    }
}

Alternatively simply call composer require moccalotto/exemel

Demo

<?php

require 'vendor/autoload.php';

function ensure($condition)
{
    if (!$condition) {
        throw new RuntimeException('Condition failed');
    }
}

$xml = new Moccalotto\Exemel\Xml(new SimpleXmlElement('<root/>'));
// <root />


/*
 * Add attr="attr0" to the root element
 */
$xml->set('[attr]', 'attr0');
ensure($xml->get('[attr]') == 'attr0');
ensure($xml->root()['attr'] == 'attr0');
// <root attr="attr0" />



/*
 * Add an element called <foo>
 * Inside that, add an element called <bar>
 * Set the contents of <bar> to "el1"
 */
$xml->set('foo/bar', 'el1');
ensure($xml->get('foo/bar') == 'el1');
ensure((string) $xml->root()->foo->bar == 'el1');
// <root attr="attr0">
//   <foo>
//     <bar>el1</bar>
//   </foo>
// </root>



/*
 * Add attr="attr1" to the newly added <bar> element
 */
$xml->set('foo/bar[ding]', 'attr1');
ensure($xml->get('foo/bar[ding]') == 'attr1');
ensure((string) $xml->root()->foo->bar['ding'] == 'attr1');
// <root attr="attr0">
//   <foo>
//     <bar ding="attr1">el1</bar>
//   </foo>
// </root>



/*
 * Add a new <foo> element to the root.
 * Inside that, add a <bar> element with the contents "el2"
 */
$xml->set('foo[]/bar', 'el2');
ensure($xml->get('foo[1]/bar') == 'el2');
ensure((string) $xml->root()->foo[1]->bar == 'el2');
// <root attr="attr0">
//   <foo>
//     <bar ding="attr1">el1</bar>
//   </foo>
//   <foo>
//     <bar>el2</bar>
//   </foo>
// </root>

echo $xml->formatted();