public function renderXml() { $document = new DOMDocument('1.0', 'utf-8'); $document->formatOutput = true; $rootNode = $document->createElement('errors'); $document->appendChild($rootNode); if (isset($this->_params['exception']) && $this->_params['exception'] instanceof Exception) { $e = $this->_params['exception']; $exceptionMessage = $e->getMessage(); $rootNode->appendChild(XenForo_Helper_DevelopmentXml::createDomElement($document, 'error', $exceptionMessage)); $traceNode = $document->createElement('trace'); foreach ($e->getTrace() as $trace) { $function = (isset($trace['class']) ? $trace['class'] . $trace['type'] : '') . $trace['function']; if (!isset($trace['file'])) { $trace['file'] = ''; } if (!isset($trace['line'])) { $trace['line'] = ''; } $entryNode = $document->createElement('entry'); $entryNode->setAttribute('function', $function); $entryNode->setAttribute('file', $trace['file']); $entryNode->setAttribute('line', $trace['line']); $traceNode->appendChild($entryNode); } $rootNode->appendChild($traceNode); } else { $rootNode->appendChild($document->createElement('error', 'Unknown error, trace unavailable')); } return $document->saveXML(); }