antimattr / xml
XML Builder for use with SimpleXMLElement
Installs: 1 547
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 4
Forks: 3
Open Issues: 1
Requires
- php: >=5.3.2
Requires (Dev)
- antimattr/test-case: ~1.0@stable
- fabpot/php-cs-fixer: 0.4.*@dev
- phpunit/phpunit: ~4.0
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/