line - 1] . "\n"; $ret .= str_repeat('-', $error->column) . "^\n"; } switch ($error->level) { case LIBXML_ERR_WARNING: $ret .= "Warning $error->code: "; break; case LIBXML_ERR_ERROR: $ret .= "Error $error->code: "; break; case LIBXML_ERR_FATAL: $ret .= "Fatal Error $error->code: "; break; } $ret .= trim($error->message) . "\n Line: $error->line" . "\n Column: $error->column\n\n"; return $ret; } /** * Generic misc debugging function to dump a node's structure as plain text xml * * @param DOMElement $node * @param string $function */ public function dumpNode($node, $function) { $doc = new \DOMDocument(null, 'utf-8'); $doc->preserveWhiteSpace = true; $doc->formatOutput = false; $doc->strictErrorChecking = false; $doc->recover = false; $doc->resolveExternals = false; if (! $newNode = @$doc->importNode($node, false)) { echo "[Invalid node, dump failed]

"; return; } $doc->appendChild($newNode); echo "$function (" . get_class($node) . "):
" . htmlentities(str_replace('', '', $doc->saveXML()) . "\n") . "

"; } }