maniaplanet / manialib-xml
Object-oriented PHP library for writing XML.
Installs: 11 134
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 9
Forks: 0
Open Issues: 0
pkg:composer/maniaplanet/manialib-xml
Requires
- php: >=5.3
This package is auto-updated.
Last update: 2022-02-01 12:35:29 UTC
README
ManiaLib\XML is an object-oriented PHP library for writing XML.
Installation
{
"require": {
"maniaplanet/manialib-xml": "0.2.*@dev"
}
}
Features
- Simple and flexible object-oriented architecture
- Configurable rendering drivers
- Symfony\Component\EventDispatcher integration
Architecture
- 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\NodeInterfacefor reference. - You then pass the root
Nodeto an instance ofManiaLib\XML\Rendering\Renderer.
Examples
<?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
Tests
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
Todo
- XMLComment
- PhpDoc
- Raw node value
- Other unsupported Node features?