Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
CRAP | |
0.00% |
0 / 42 |
XmlBuilder | |
0.00% |
0 / 1 |
|
0.00% |
0 / 8 |
132 | |
0.00% |
0 / 42 |
__construct() | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
__get($tag) | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
val($val) | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
attr($attr, $val) | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
parent() | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
parents($tag) | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 14 |
|||
__toString() | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
getDom() | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
<?php | |
namespace Codeception\Util; | |
class XmlBuilder | |
{ | |
/** | |
* @var \DOMDocument | |
*/ | |
protected $__dom__; | |
/** | |
* @var \DOMElement | |
*/ | |
protected $__currentNode__; | |
public function __construct() { | |
$this->__dom__ = new \DOMDocument(); | |
$this->__currentNode__ = $this->__dom__; | |
} | |
/** | |
* Appends child node | |
* | |
* @param $tag | |
* @return XmlBuilder | |
*/ | |
public function __get($tag) { | |
$node = $this->__dom__->createElement($tag); | |
$this->__currentNode__->appendChild($node); | |
$this->__currentNode__ = $node; | |
return $this; | |
} | |
/** | |
* @param $val | |
* @return XmlBuilder | |
*/ | |
public function val($val) { | |
$this->__currentNode__->nodeValue = $val; | |
return $this; | |
} | |
/** | |
* Sets attribute for current node | |
* | |
* @param $attr | |
* @param $val | |
* @return XmlBuilder | |
*/ | |
public function attr($attr, $val) { | |
$this->__currentNode__->setAttribute($attr, $val); | |
return $this; | |
} | |
/** | |
* Traverses to parent | |
* | |
* @return XmlBuilder | |
*/ | |
public function parent() { | |
$this->__currentNode__ = $this->__currentNode__->parentNode; | |
return $this; | |
} | |
/** | |
* Traverses to parent with $name | |
* | |
* @param $tag | |
* @return XmlBuilder | |
* @throws \Exception | |
*/ | |
public function parents($tag) { | |
$traverseNode = $this->__currentNode__; | |
$elFound = false; | |
while ($traverseNode->parentNode) { | |
$traverseNode = $traverseNode->parentNode; | |
if ($traverseNode->tagName == $tag) { | |
$this->__currentNode__ = $traverseNode; | |
$elFound = true; | |
break; | |
} | |
} | |
if (!$elFound) throw new \Exception("Parent $tag not found in XML"); | |
return $this; | |
} | |
public function __toString() { | |
return $this->__dom__->saveXML(); | |
} | |
/** | |
* @return \DOMDocument | |
*/ | |
public function getDom() { | |
return $this->__dom__; | |
} | |
} |