PHP libXMLError 类包含有关 libxml 引发的错误的各种信息。
类概要
class libXMLError {
//属性
public int $level;
public int $code;
public int $column;
public string $message;
public string $file;
public int $line;
}
属性
level | 错误的严重性级别(以下常量之一:LIBXML_ERR_WARNING、LIBXML_ERR_ERROR 或LIBXML_ERR_FATAL) |
code | 错误代码。 |
column | 发生错误的列。 |
message | 错误消息(如果有)。 |
file | 文件名,如果从字符串加载 XML,则为空。 |
line | 发生错误的行。 |
示例:
下面的示例显示了libXMLError类的用法。
<?php
libxml_use_internal_errors(true);
//包含不匹配的标签
$xmlstr = <<<XML
<mail>
<To>John Smith</too>
<From>Marry G.</From>
<Subject>Happy Birthday</Subject>
<body>Happy birthday. Live your life with smiles.</body>
</mail>
XML;
$doc = simplexml_load_string($xmlstr);
$xml = explode("\n", $xmlstr);
if ($doc === false) {
$errors = libxml_get_errors();
//显示发生错误
foreach ($errors as $error) {
echo display_xml_error($error, $xml);
}
//清除libxml错误缓冲区
libxml_get_errors();
}
//显示错误信息的函数
function display_xml_error($error, $xml) {
$message = "";
switch ($error->level) {
case LIBXML_ERR_WARNING:
$message .= "Warning $error->code: ";
break;
case LIBXML_ERR_ERROR:
$message .= "Error $error->code: ";
break;
case LIBXML_ERR_FATAL:
$message .= "Fatal Error $error->code: ";
break;
}
$message .= trim($error->message) .
"\n Line: $error->line" .
"\n Column: $error->column";
if ($error->file) {
$message .= "\n File: $error->file";
}
return $message;
}
?>
上述代码的输出将是:
Fatal Error 76: Opening and ending tag mismatch: To line 2 and too
Line: 2
Column: 23