Skip to content

Latest commit

 

History

History
127 lines (82 loc) · 2.84 KB

File metadata and controls

127 lines (82 loc) · 2.84 KB

Codeception\Util\XmlBuilder

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>

Usage

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.

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