您现在的位置: 网页制作教程网 >> 网络编程 >> xml 教程 >> 文章正文

php的xml分析函数

作者:动态网站…

来源:动态网站制作指南

热度:

2007-6-14 13:04:50

// 排序函数
function my_sort($a, $b) 

return(is_object($a) && is_object($b) ? $b->count - $a->count: 0); 

function start_element($parser, $name, $attrs) 

global $elements, $stack; 

// 元素是否已在全局$elements数组中?
if(!isset($elements[$name])) 

// 否-增加一个元素的类实例
$element = new element; 
$elements[$name] = $element; 

// 该元素的记数器加一
$elements[$name]->count++; 

// 是否有父元素?
if(isset($stack[count($stack)-1])) 

// 是-将父元素赋给$last_element
$last_element = $stack[count($stack)-1]; 

// 如果目前元素的父元素数组为空,初始化为0
if(!isset($elements[$name]->parents[$last_element])) 

$elements[$name]->parents[$last_element] = 0; 

// 该元素的父元素记数器加一
$elements[$name]->parents[$last_element]++; 

// 如果目前元素的父元素的子元素数组为空,初始化为0

if(!isset($elements[$last_element]->childs[$name])) 

$elements[$last_element]->childs[$name] = 0; 

// 该元素的父元素的子元素记数器加一
$elements[$last_element]->childs[$name]++; 

// 将目前的元素加入到栈中
array_push($stack, $name); 

function stop_element($parser, $name) 

global $stack; 

// 从栈中将最顶部的元素移去
array_pop($stack); 

function char_data($parser, $data) 

global $elements, $stack, $depth; 

// 增加目前元素的字符数目
$elements[$stack][count($stack)-1]]->chars += strlen(trim($data)); 

// 产生解析器的实例
$parser = xml_parser_create(); 

// 设置处理函数
xml_set_element_handler($parser, "start_element", "stop_element"); 
xml_set_character_data_handler($parser, "char_data"); 
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); 

// 解析文件
$ret = xml_parse_from_file($parser, $file); 
if(!$ret) 

die(sprintf("XML error: %s at line %d", 
xml_error_string(xml_get_error_code($parser)), 
xml_get_current_line_number($parser))); 

上一页  [1] [2] [3] [4] [5] 下一页

我来说两句:

1分 2分 3分 4分 5分
姓名: *


* 请各位网友遵纪守法并注意语言文明。
网站简介 | 联系方式 | 意见建议 | 版权说明
Copyright © 2007 All rights reserved
滇ICP备06006992号