This package is abandoned and no longer maintained. No replacement package was suggested.

XML Builder for use with SimpleXMLElement

v1.0.0 2014-10-31 23:33 UTC

This package is not auto-updated.

Last update: 2018-07-08 20:50:09 UTC


README

The AntiMattr XML library that provides XML building support for SimpleXMLElement.

Installation

Add the following to your composer.json file:

{
    "require": {
        "antimattr/xml": "~1.0@stable"
    }
}

Install the libraries by running:

composer install

If everything worked, the XML Library can now be found at vendor/antimattr/xml.

Example

There are a lot of examples in the tests directory, here are the basics

Note: Ordinary Arrays are supported. To handle scenarios such as "attributes" and "indexed vs associative arrays", notice the existince of array keys

'_name'
'_attributes'
'_values'
One Node
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <product/>
</root>
$root = $this->builder
    ->setRoot('root')
    ->create();

$data = array(
    'product' => array()
);
$this->builder->add($root, $data);

$xml = $root->asXML();
Multiple Nodes
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <product/>
  <foo/>
  <bar/>
</root>
$root = $this->builder
    ->setRoot('root')
    ->create();

$data = array(
    'product' => array(),
    'foo' => array(),
    'bar' => array()
);
$this->builder->add($root, $data);

$xml = $root->asXML();
Multiple Repeating Nodes
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <product/>
  <product/>
  <product/>
</root>
$root = $this->builder
    ->setRoot('root')
    ->create();

$data = array(
    0 => array('_name' => 'product'),
    1 => array('_name' => 'product'),
    2 => array('_name' => 'product')
);
$this->builder->add($root, $data);

$xml = $root->asXML();
Child Nodes and Attributes
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <product>
  	<item foo5="bar5" example5="test5"/>
  </product>
</root>
$root = $this->builder
    ->setRoot('root')
    ->create();

$data = array(
    'product' => array(
        '_values' => array(
            'item' => array(
                '_attributes' => array('foo5' => 'bar5', 'example5' => 'test5')
            ),
        )
    )
);
$this->builder->add($root, $data);
$xml = $root->asXML();

Pull Requests

Pull Requests - PSR Standards

Please use the pre-commit hook to fix all code to PSR standards

Install once with

./bin/install.sh 
Copying /antimattr-xml/bin/pre-commit.sh -> /antimattr-xml/bin/../.git/hooks/pre-commit

Pull Requests - Testing

Please make sure tests pass

$ vendor/bin/phpunit tests

Pull Requests - Code Sniffer and Fixer

Don't have the pre-commit hook running, please make sure to run the fixer/sniffer manually

$ vendor/bin/php-cs-fixer fix src/
$ vendor/bin/php-cs-fixer fix tests/