PHP XML解析器函数

PHP xml_parser_set_option() 函数通过 XML 解析器设置选项值。

语法

xml_parser_set_option(parser, option, value) 

参数

parser必需。 指定对 XML 解析器的引用以在其中设置选项。
option必需。 指定要设置的选项。可能的值为:
  • XML_OPTION_CASE_FOLDING:指定是否启用大小写折叠。默认处于启用状态。
  • XML_OPTION_SKIP_TAGSTART:指定在标记名称开头跳过的字符数。
  • XML_OPTION_SKIP_WHITE :指定是否跳过由空白字符组成的值。
  • XML_OPTION_TARGET_ENCODING:指定此 XML 解析器中的目标编码。设置为与 xml_parser_create() 函数相同。支持的目标编码为 ISO-8859-1、US-ASCII 和 UTF-8。
value必需。 指定选项的新值。

返回值

如果解析程序未引用有效的解析程序,或者无法设置该选项,则返回false。否则,将设置该选项并返回true。

示例:

在下面的示例中,使用 xml_parser_create() 函数创建 XML 解析器。然后,xml_parser_set_option()函数用于设置此 XML 解析器的选项值。

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

//设置XML_OPTION_CASE_FOLDING的值
$retval1 = xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
if($retval1)
  echo "XML_OPTION_CASE_FOLDING is set successfully.<br>";
else
  echo "Getting error while setting XML_OPTION_CASE_FOLDING.<br>";

//设置XML_OPTION_SKIP_TAGSTART的值
$retval2 = xml_parser_set_option($parser, XML_OPTION_SKIP_TAGSTART, 1);
if($retval2)
  echo "XML_OPTION_SKIP_TAGSTART is set successfully.<br>";
else
  echo "Getting error while setting XML_OPTION_SKIP_TAGSTART.<br>";

//设置XML_OPTION_TARGET_ENCODING的值
$retval3 = xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'US-ASCII');
if($retval3)
  echo "XML_OPTION_TARGET_ENCODING is set successfully.<br>";
else
  echo "Getting error while setting XML_OPTION_TARGET_ENCODING.<br>";

//免费的XML解析器
xml_parser_free($parser);
?> 

上述代码的输出将是:

XML_OPTION_CASE_FOLDING is set successfully.
XML_OPTION_SKIP_TAGSTART is set successfully.
XML_OPTION_TARGET_ENCODING is set successfully. 

示例:

考虑下面的示例,其中尝试设置选项的值将其设置为无效值。在这种情况下,会发生运行时错误。

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

//设置XML_OPTION_TARGET_ENCODING的值
$retval = xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-16');
if($retval)
  echo "XML_OPTION_TARGET_ENCODING is set successfully.<br>";
else
  echo "Getting error while setting XML_OPTION_TARGET_ENCODING.<br>";

//免费的XML解析器
xml_parser_free($parser);
?> 

上述代码的输出将是:

PHP Fatal error:  Uncaught ValueError: xml_parser_set_option(): Argument #3 ($value) is not a supported target encoding in Main.php:6
Stack trace:
#0 Main.php(6): xml_parser_set_option()
#1 {main}
  thrown in Main.php on line 6