在PHP4中用工具包expat解析XML文档
关于在PHP中解析XML文档,有很多种方法,摘录:
1 php5的dom解析
2 php4的expat解析
3 基于以上两种技术之一自行开发的类
4 类似插件式的增强工具
以上这些基本上都是基于php基础之上的,任何一种在特定环境下都可使用。性能上各有优缺点,以下对主要的基础方法进行比较(上述前两种方法)
dom方法:
优点: 操作简单,使用方便,支持树
缺点: 但对服务器性能要求较高,要求基于php5环境,php4下的dom与php5不可同日而语。其解析一个文件,内存使用会十倍于文件大小,且速度很慢,因此大型xml文件应望而却步。
适用: 服务器php版本较新,性能好,xml文件体积不大。
EXPAT解析方法:
优点: 解析文件占用内存小,速度快,如果单为解析xml成html,则内存占用几乎可以忽略,因可定制使用,因此灵活性较强
缺点: 操作不够简便,对新手而言不易掌握,无结构,虽可在需要的时候人工生成树,但相对困难。对文件的操作完全依赖于文件操作方法,本身对文件操作无支持。
适用: 服务器版本低,性能差,对xml文件体积限制不大。(其解析内存耗用约2倍文件大小)
以上两种方法及其他基于此两种方法开发的类,大多也因以上两种基础上的原因,而各有优劣。
当然,php5以后,又提供了一些新的操作xml的方法,但相信少有人用.
在PHP4中用工具包expat解析XML文档
概述:
PHP用expat这种XML工具包,通过C语言来解析XML。这个工具包的函数集同Perl XML解析所采用的函数集是一样的,此外,这种工具包还是事件驱动型的解析器。这就是说,expat把每个XML标签或者新一行代码当作事件的起始,而事件就是函数的触发器。Expat的安装非常简单,如果你正在用着Apache Web服务器,那么你可以在PHP XML参考页上找到安装和下载指南。
用PHP解析XML的基本任务是这样的:首先,创建XML解析器的一个实例。接着,定义处理触发事件的函数,比如开始或者结束标签等。随后,定义实际意义的数据处理程序。最后,打开XML文件,读取文件数据并解析数据。之后关闭文件释放XML解析器。
你瞧,就像我说的那样,这套操作过程没什么特别的。不过,在我们讨论具体的示例之前先了解以下的一些警示:
Expat不对XML进行检验。这意味着只要XML文件格式正确——所有的元素嵌套得当、开始和关闭标签没有任何错误——它就会被解析。Expat可不管XML是否遵守XML文件头中引用的标准或者定义。
Expat把XML标签全部转换为大写字母。如果你的脚本在标签名和其他内容上大小写字母混用可就要小心了。
PHP是在magic quotes设置启用的情况下编译而成,那么复杂的XML文件不会得到正确的解析。要是magic quotes不是默认设置,你就当我没说。
好了,我们现在就来看看有关的示例!
基本示例
为了把复杂的事情简单化,我在例子中省略了错误检查和其他一些不必要的东西,当然,你可以在自己的代码随心所欲。我假定你早就熟悉PHP及其语法,而我会对XML函数做一番解释。首先我会说明脚本程序的含义,接着定义用户定义函数,实际上这些函数位于引用它们的代码之前。
脚本要解析的XML文档代码:
[coolcode]
[/coolcode]
脚本的完整代码:
[coolcode]
$xml_file = "data.xml";
echo "\n”;
echo “
个人资料 | ||
---|---|---|
序号 | 姓名 | 年龄 |
“.$attrs[‘ID’].” | “; break; case “AGE” : echo “ | “; break; } } function characterData($parser_instance, $xml_data) { function endElement($parser_instance, $element_name) { |
“;
?>