/** Makes a XML node from an object/ array / text */ static function makeXML($model, $parent, $addToParent = false) { if (is_array($model)) { foreach ($model as $name => $value) { if (!is_numeric($name)) { $node = $parent->ownerDocument->createElement($name); $parent->appendChild($node); IPXSLTemplate::makeXml($value, $node, true); } else { $node = $parent; IPXSLTemplate::makeXml($value, $node); } } } elseif (is_object($model)) { if ($addToParent) { $node = $parent; } else { $node = $parent->ownerDocument->createElement(get_class($model)); $parent->appendChild($node); } foreach ($model as $propertyName => $propertyValue) { $property = $parent->ownerDocument->createElement($propertyName); $node->appendChild($property); IPXSLTemplate::makeXml($propertyValue, $property); } } else { $parent->appendChild($parent->ownerDocument->createTextNode($model)); } }