Skip to content
Object-oriented PHP library for writing XML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
src/ManiaLib/XML
tests
.gitignore
.travis.yml
LICENSE
README.md
composer.json
phpunit.xml.dist

README.md

ManiaLib\XML

Latest Stable Version Latest Unstable Version Total Downloads Build

ManiaLib\XML is an object-oriented PHP library for writing XML.

Installation

Install via Composer:

{
	"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\NodeInterface for reference.
  • You then pass the root Node to an instance of ManiaLib\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:

Todo

  • XMLComment
  • PhpDoc
  • Raw node value
  • Other unsupported Node features?
You can’t perform that action at this time.