Tengo un problema con la función domxml_open_file(), quiero que me recoja el error para después yo poder escribir el mensaje por pantalla, pero lo que sucede es que menda un error del tipo:
Código Error:
Ver original
domxml_open_file(): Failed to parse QName 'ETIQUETA_INCORRECTA'
Y todo lo que va después del open no se muestra.
Yo a la función la llamo enviándole estos parámetros:
Código PHP:
$domxml = domxml_open_file('test.xml',DOMXML_LOAD_PARSING,$error);
Código PHP:
$domxml = domxml_open_file('test.xml',DOMXML_LOAD_PARSING,$error);
if ($error){
echo $error." Error while parsing file.";
exit;
}else{
echo "Correct parsing of file.";
}
Código PHP:
if (!$domxml = domxml_open_file('test.xml', DOMXML_LOAD_PARSING, $error)) {
echo $error." Error while parsing file.";
exit;
}
Código PHP:
$domxml = domxml_open_file($filename,DOMXML_LOAD_PARSING,$error) or die("Error while parsing file.");
Código PHP:
if (!$domxml = domxml_open_file($filename)) {
trigger_error("Error while parsing file.", E_USER_ERROR);
}
Código PHP:
if (!$domxml = domxml_open_file($filename,DOMXML_LOAD_PARSING,$error)) {
echo "XML parse error\n";
foreach ($error as $errorline) {
echo $errorline['errormessage']."<br />\n";
echo "Node : ".$errorline['nodename']."<br />\n";
echo "Line : ".$errorline['line']."<br />\n";
echo "Column: ".$errorline['col']."<br />\n";
}
}
También e probado con:
Código PHP:
$domxml = domxml_open_file($filename,DOMXML_LOAD_PARSING,$error);
// Show error.
if(!$domxml) {
// Assign each line to array.
$arXML = explode("\n", $xml);
echo "<pre>";
foreach ($error as $errorline) {
echo $errorline['errormessage'].
"Node : ".$errorline['nodename']."\n".
"Line : ".$errorline['line']."\n".
"Column: ".$errorline['col']."\n";
// Locate actual line number.
$arErrorMessage = explode(' line ', $errorline['errormessage']);
$arErrorMessage = explode(' ', $arErrorMessage[1]);
$errorLineNumber = $arErrorMessage[0];
// Show +/- 10 lines around error.
$minErrorLineNumber = max(0, $errorLineNumber-10);
$maxErrorLineNumber = min(sizeof($arXML), $errorLineNumber+10);
echo "XML snip (linies: ".$minErrorLineNumber." to ".$maxErrorLineNumber."):\n";
for($n = $minErrorLineNumber; $n < $maxErrorLineNumber; $n++)
if($n == $errorLineNumber)
echo "<B>".htmlentities($arXML[$n])."</B>\n";
else
echo htmlentities($arXML[$n])."\n";
echo "\n\n";
}
echo "</pre>";
}
Todo el código anterior funciona correctamente.
Se puede cerrar el tema.