That’s a pretty simple yet powerful class to build XML structures in jQuery-like style. With no XML line actually written! Uses DOM extension to manipulate XML data.

$xml = new \Codeception\Util\XmlBuilder();
           ->val('[email protected]')
                   ->val('useful item');
echo $xml;

This will produce this XML

<?xml version="1.0"?>
       <email valid="true">[email protected]</email>
       <cart empty="false">
               <item>useful item</item>


Builder uses chained calls. So each call to builder returns a builder object. Except for getDom and __toString methods.

  • $xml->node - create new xml node and go inside of it.
  • $xml->node->val('value') - sets the inner value of node
  • $xml->attr('name','value') - set the attribute of node
  • $xml->parent() - go back to parent node.
  • $xml->parents('user') - go back through all parents to user node.


  • $xml->getDom - get a DOMDocument object
  • $xml->__toString - get a string representation of XML.

Source code


public __construct()

See source


public __get($tag)

Appends child node

  • param $tag
  • return XmlBuilder

See source


public __toString()

See source


public attr($attr, $val)

Sets attribute for current node

  • param $attr
  • param $val
  • return XmlBuilder

See source


public getDom()

  • return \DOMDocument

See source


public parent()

Traverses to parent

  • return XmlBuilder

See source


public parents($tag)

Traverses to parent with $name

  • param $tag
  • return XmlBuilder
  • throws \Exception

See source


public val($val)

  • param $val
  • return XmlBuilder

See source


Reference is taken from the source code. Help us to improve documentation. Edit module reference
Don't know how to write tests on your own? We will build or improve them for you. Request a quote for official enterprise support or trainings