ManiaLib\XML is an object-oriented PHP library for writing XML.
{
"require": {
"maniaplanet/manialib-xml": "0.2.*@dev"
}
}
- Simple and flexible object-oriented architecture
- Configurable rendering drivers
- Symfony\Component\EventDispatcher integration
- You construct a tree of
ManiaLib\XML\Node
. - Setter methods return the element for chaining (eg.
$node->setNodeName('foo')->setNodeValue('bar');
. ManiaLib\XML\Node::create()
instanciates the object and returns it for easy chaining (eg.Node::create()->setNodeName('foo');
).- If you're running PHP 5.4+ you can use class member access on instantiation instead eg.
(new Node)->setNodeName('foo');
. - See
ManiaLib\XML\NodeInterface
for reference. - You then pass the root
Node
to an instance ofManiaLib\XML\Rendering\Renderer
.
<?php
use ManiaLib\XML\Node;
use ManiaLib\XML\Rendering\Renderer;
require_once '../vendor/autoload.php';
// Let's build a Node tree. Here is the root element.
$root = Node::create()
->setNodeName('rootElement')
->setAttribute('rootAttrivute', '1.0');
// This is one way to append child, ie. "append this element to its parent"
Node::create()
->setNodeName('someElement')
->setAttribute('someAttribute', 'foo')
->setAttribute('otherAttribute', 'bar')
->setNodeValue('Hello world')
->appendTo($root);
// This is another way, ie. "appends a child to this element"
$node = Node::create()->setNodeName('anotherOne');
$root->appendChild($node);
// Let's render the tree
$renderer = new Renderer();
$renderer->setRoot($root);
echo $renderer->getXML();
It will output:
<rootElement rootAttrivute="1.0">
<someElement someAttribute="foo" otherAttribute="bar">
Hello world
</someElement>
<anotherOne/>
</rootElement>
More in /examples directory
A simple suite tests .php files in the /examples directory against their associated .xml renders. To run the tests we recommand:
- PHPUnit system-wide installation via Composer
- Run
composer install
- Run
phpunit
- XMLComment
- PhpDoc
- Raw node value
- Other unsupported Node features?