PHP xml_parse XML 解析器函数
-
定义和用法
xml_parse - 开始解析一个 XML 文档。 -
版本支持
PHP4 PHP5 PHP7 支持 支持 支持 -
语法
xml_parse ( resource $parser , string $data [, bool $is_final = false ] )
xml_parse() 解析 XML 文档。已配置事件的处理器根据需要被无限次调用。 -
参数
参数 必需的 描述 parser 是 一个指向将要使用的 XML 解析器的指针。 data 是 需要解析的数据集。您可以多次对新的数据调用 xml_parse() 函数来分段解析一个文档;只要在解析最后一段数据时将 is_final 参数设置为 TRUE。 is_final 否 如果被设置为 TRUE,则 data 为当前解析中最后一段数据。 -
返回值
成功时返回1,失败时返回0,若解析失败,可以使用如下函数获取错误信息: xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number() 和 xml_get_current_byte_index()。将 is_final 参数设置为 TRUE,项目的错误将会报告在数据的末尾。
-
示例
$file = 'simple.xml'; $stack = array(); function startTag($parser, $name, $attrs) { global $stack; $tag=array("name"=>$name,"attrs"=>$attrs); array_push($stack,$tag); } function cdata($parser, $cdata) { global $stack,$i; if(trim($cdata)) { $stack[count($stack)-1]['cdata']=$cdata; } } function endTag($parser, $name) { global $stack; $stack[count($stack)-2]['children'][] = $stack[count($stack)-1]; array_pop($stack); } $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startTag", "endTag"); xml_set_character_data_handler($xml_parser, "cdata"); $data = xml_parse($xml_parser,file_get_contents($file)); if(!$data) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); } xml_parser_free($xml_parser); print("<pre>\n"); print_r($stack); print("</pre>\n");
-
相关函数
xml_error_string() - 获取 XML 解析器的错误字符串