xml_parser_set_option
时间:2008-05-04 来源:小飞虫
(PHP 4, PHP 5)
xml_parser_set_option — 为指定 XML 解析进行选项设置
说明
bool xml_parser_set_option ( resource $parser, int $option, mixed $value )
parser
指向要设置选项信息的 XML 解析器的指针。
option
要设置的选项名称。请参考下文。
value
要给选项设置的新值。
如果 parser 参数没有指向一个合法的解析器或者指定的选项无法设置,该函数将返回 FALSE,否则将会把选项设置为指定的值并返回 TRUE。
可被设置的选项如下:
表 316. XML 解析器选项
选项常量
数据类型
描述
XML_OPTION_CASE_FOLDING
integer
控制在该 XML 解析器中
大小写折叠(case-folding)
是否有效。其默认值为有效。
XML_OPTION_SKIP_TAGSTART
integer
指明在一个标记名前应略过几个字符。
XML_OPTION_SKIP_WHITE
integer
是否略过由白空字符组成的值。
XML_OPTION_TARGET_ENCODING
string
设置该 XML 解析器所使用的
目标编码(target encoding)
方式。其默认值和由
xml_parser_create()
函数设置的源编码(source encoding)方式相同。支持的目标编码方式有 ISO-8859-1、US-ASCII 和 UTF-8。
例子
A little mod to a function posted here...
function xml_to_array( $file )
{
$parser = xml_parser_create();
xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 );
xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 );
xml_parse_into_struct( $parser, file_get_contents($file), $tags );
xml_parser_free( $parser );
$elements = array();
$stack = array();
foreach ( $tags as $tag )
{
$index = count( $elements );
if ( $tag['type'] == "complete" || $tag['type'] == "open" )
{
$elements[$index] = array();
$elements[$index]['name'] = $tag['tag'];
$elements[$index]['attributes'] = $tag['attributes'];
$elements[$index]['content'] = $tag['value'];
if ( $tag['type'] == "open" )
{ # push
$elements[$index]['children'] = array();
$stack[count($stack)] = &$elements;
$elements = &$elements[$index]['children'];
}
}
if ( $tag['type'] == "close" )
{ # pop
$elements = &$stack[count($stack) - 1];
unset($stack[count($stack) - 1]);
}
}
return $elements[0];
}
相关阅读 更多 +