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.
<?php
$xml = new \Codeception\Util\XmlBuilder();
$xml->users
   ->user
       ->val(1)
       ->email
           ->val('davert@mail.ua')
           ->attr('valid','true')
           ->parent()
       ->cart
           ->attr('empty','false')
           ->items
               ->item
                   ->val('useful item');
               ->parents('user')
       ->active
           ->val(1);
echo $xml;
This will produce this XML
<?xml version="1.0"?>
<users>
   <user>
       1
       <email valid="true">davert@mail.ua</email>
       <cart empty="false">
           <items>
               <item>useful item</item>
           </items>
       </cart>
       <active>1</active>
   </user>
</users>
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.Export:
$xml->getDom - get a DOMDocument object$xml->__toString - get a string representation of XML.public __construct()
public __get($tag)
Appends child node
param $tagreturn XmlBuilderpublic __toString()
public attr($attr, $val)
Sets attribute for current node
param $attrparam $valreturn XmlBuilderpublic getDom()
return \DOMDocumentpublic parent()
Traverses to parent
return XmlBuilderpublic parents($tag)
Traverses to parent with $name
param $tagreturn XmlBuilderthrows \Exceptionpublic val($val)
param $valreturn XmlBuilder