PHP libxml函数

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