四、在第三章程序的基础上,可以显示一段子树。
同第二章的代码我就不再注释了。
下面的代码是我们的迷你搜索引擎的基础。
因为,要显示出一个字类别(如程序设计->PHP->)的信息就要用到他。
我们依照元素的层数和他在当层的第几号来对他进行定位
如:
links (0,1)
+----web (1,1)
+----sub (1,2)
| +----web (2,1)
| +----sub (2,2)
| | +----web (3,1)
| | +----sub (3,2)
:
:
:
__________________________________________________________
html>
body>
// XML文件
$file = "demo.xml";
// 解析XML文件的函数
function xml_parse_from_file($parser, $file)
{
if(!file_exists($file))
{
die("Can’t find file "$file".");
}
if(!($fp = @fopen($file, "r")))
{
die("Can’t open file "$file".");
}
while($data = fread($fp, 4096))
{
if(!xml_parse($parser, $data, feof($fp)))
{
return(false);
}
}
fclose($fp);
return(true);
}
function start_element($parser, $name, $attrs)
{
global $level,$levelcount,$maxlevel,$hide,$lev,$num,$PHP_SELF;
$level += 1;
if($level>$maxlevel)$maxlevel=$level;
$levelcount[$level]+=1;
if($hide){ //判断是否在子树的范围内 $hide==FALSE 为在
if($level==$lev&&$levelcount[$level]==$num)$hide=FALSE;
}else{
if($level
}
if(!$hide){
echo "
";
for($i=1;$i
if($level-$lev>0)echo"+----";
echo "".
//加上每个元素节点的联接
trim($name)." ";
while ( list( $key, $val ) = each( $attrs ) ) {
echo "$key => $val; ";
}
}
}
function stop_element($parser, $name)
{
global $level;
$level -= 1;
}
function data($parser, $data)
{
global $level,$hide;
if(!$hide)
if(trim($data)!=""){
echo trim($data);
}
}
//main start
global $hide,$lev,$num,$PHP_SELF;
$level = -1;
$hide = TRUE;
echo "";
if($lev==""){$lev=0;$num=1;}
$parser = xml_parser_create();
xml_set_element_handler($parser, "start_element", "stop_element");
xml_set_character_data_handler($parser, "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)));
}
xml_parser_free($parser);
?>
/body>
/html>
0
0
相关文章
php实现班级通信录导入主键冲突_php覆盖或忽略冲突法【技巧】
Laravel 多行数据编辑表单中实现逐行独立文件上传的完整教程
如何在 Laravel 多行批量编辑表单中为每行独立上传文件
php数组下标是负数有效吗_php负数下标使用规则【技巧】
如何批量读取文件夹中的多个 Excel(.xlsx)文件并合并为单一数组
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。
13
2026.02.03
本专题汇总了俄罗斯知名搜索引擎 Yandex 的官网入口、免登录访问地址、中文登录方法与网页版使用指南,帮助用户稳定访问 Yandex 官网,并提供一站式入口汇总。无论是登录入口还是在线搜索,用户都能快速获取最新稳定的访问链接与使用指南。
114
2026.02.03
本专题专注讲解 Java 中常用的设计模式,包括单例模式、工厂模式、观察者模式、策略模式等,并结合代码重构实践,帮助学习者掌握 如何运用设计模式优化代码结构,提高代码的可读性、可维护性和扩展性。通过具体示例,展示设计模式如何解决实际开发中的复杂问题。
3
2026.02.03
本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。
2
2026.02.03
本专题深入讲解 Python 在强化学习(Reinforcement Learning)中的应用,重点介绍 深度Q网络(DQN) 及其实现方法,涵盖 Q-learning 算法、深度学习与神经网络的结合、环境模拟与奖励机制设计、探索与利用的平衡等。通过构建一个简单的游戏AI,帮助学习者掌握 如何使用 Python 训练智能体在动态环境中作出决策。
3
2026.02.03
热门下载
相关下载
精品课程
最新文章






