PHP XML解析器函数

PHP xml_error_string() 函数返回与给定 error_code 关联的 XML 解析器错误字符串。该函数返回一个字符串,其中包含错误的文本描述error_code,如果未找到描述,则返回 false。

语法

xml_error_string(error_code) 

参数

error_code必填。 xml_get_error_code() 函数指定错误代码。

返回值

返回包含错误error_code文本描述的字符串,如果未找到描述,则返回 false。

示例:错误(字符串未用双引号括起来)

假设我们有一个名为 demo.xml 的文件。该文件包含以下内容。内容包含错误(用双引号括起来的字符串)。

<?xml version="1.0 encoding="UTF-8"?>
<userlist>
  <user>
    <username>John123</username>
    <name>John Smith</name>
    <phone>+1-8054098000</phone>
    <address>Brooklyn, New York, USA</address>
  </user>
</userlist> 

在下面的示例中,解析了 XML 文件。它在解析文档时显示错误。

<?php
//创建XML解析器
$parser=xml_parser_create();

//打开xml文件
$fp = fopen("demo.xml", "r");

while($data = fread($fp,4096)) {
  //解析XML数据
  if(!xml_parse($parser, $data, feof($fp))) {
    //显示错误
    die(print "Error: " .
      //错误字符串
      xml_error_string(xml_get_error_code($parser)) .
       
      "<br/>Error Code: " . 
      //错误代码
      xml_get_error_code($parser) .
       
      "<br/>Line: " .
      //发生错误的行号
      xml_get_current_line_number($parser) .
       
      "<br/>Column: " .
      //发生错误的列号
      xml_get_current_column_number($parser) .
       
      "<br/>Byte Index: " .
      //发生错误的字节索引
      xml_get_current_byte_index($parser) . "<br/>"
    );
  }
}

//免费的XML解析器
xml_get_error_coder_free($parser);

fclose($fp);
?> 

上述代码的输出将是:

Error: String not closed expecting " or '
Error Code: 34
Line: 1
Column: 38
Byte Index: 37 

示例:错误(标签不匹配)

假设我们有一个文件称为example.xml。该文件包含以下内容。内容包含错误(标签不匹配)。

<?xml version="1.0" encoding="UTF-8"?>
<userlist>
  <user>
    <username>John123</username>
    <name>John Smith</name>
    <phone>+1-8054098000</phone>
    <address>Brooklyn, New York, USA<address>
  </user>
</userlist> 

在下面的示例中,解析了 XML 文件。它在解析文档时显示错误。

<?php
//创建XML解析器
$parser=xml_parser_create();

//打开xml文件
$fp = fopen("example.xml", "r");

while($data = fread($fp,4096)) {
  //解析XML数据
  if(!xml_parse($parser, $data, feof($fp))) {
    //显示错误
    die(print "Error: " .
      //错误字符串
      xml_error_string(xml_get_error_code($parser)) .
       
      "<br/>Error Code: " . 
      //错误代码
      xml_get_error_code($parser) .
       
      "<br/>Line: " .
      //发生错误的行号
      xml_get_current_line_number($parser) .
       
      "<br/>Column: " .
      //发生错误的列号
      xml_get_current_column_number($parser) .
       
      "<br/>Byte Index: " .
      //发生错误的字节索引
      xml_get_current_byte_index($parser) . "<br/>"
    );
  }
}

//免费的XML解析器
xml_get_error_coder_free($parser);

fclose($fp);
?> 

上述代码的输出将是:

Error: Mismatched tag
Error Code: 76
Line: 8
Column: 10
Byte Index: 220