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
Let us help you take Codeception further. We offer a number of paid services that can help you and your organization get the most out of Codeception Enterprise. Software testing & test automation development and outsourcing. Request a quote for enterprise support or trainings

Not sure what to test?

Let your users tell you!

Turn user feedback into tests

with Bugira Bugtracker