只要xml_parse遇到<url>这样的开始标签,“startElement”函数就由XML解析器调用,在我们的例子中解析器就是$parser。该函数是必须定义的函数,它拥有3个自动传递给它的参数:XML解析器实例、大写的元素名称,比如URL以及该元素所具有的属性数组。在以上示例中,XML文件中的元素没有属性集合,所以数组参数为空,但这个参数还是必须存在的。
就这个例子而言,我决定在一个HTML表中显示我的XML数据。如上所示,出于简化的缘故我没有编写错误处理代码。这里我耍了个障眼法,因为我知道XML文件中标签出现的顺序。否则我可以用“startElement”、“characterData”和“endElement”函数来定义数组,然后用单独的函数显示结果。
function startElement($parser_instance,
$element_name, $attrs) {
switch($element_name) {
case “URL”
: echo “<tr><td><a href=””;
break;
case “SUMMARY” :
echo “<td>”;
break;
}
}
处理元素标签之后,xml_parse一旦遇到XML数据就会调用“characterData”函数。这个函数也是由解析器自动调用的,该函数需要两个参数,解析器实例和包含数据的字符串。
function characterData($parser_instance, $xml_data) {
echo $xml_data;
}
最后xml_parse遭遇结束标签,运行“endElement”函数,该函数带两个参数,解析器实例和元素名称。
function endElement($parser_instance, $element_name)
{
switch($element_name) {
case “URL”
: echo “”>”;
break;
case “TITLE” :
echo “</a></td>”;
break;
case “SUMMARY” :
echo “</td></tr>”;
break;
}
}
用PHP解析XML的轻量锻炼到这里就结束了,下面我们开始加些重活。
PHP中还有其他一些同XML解析有关的函数。PHP.net文档对这些函数进行了完整的说明。我在这里提到了一些,你或许不久就会用到这些函数:
如果你觉得自己已经上手,我建议你仔细读读PHP手册页中提供的XML
External Entity Example。这些例子提出了本文没有提到的其他一些概念以及处理文件错误的某些技术。
本文演示了PHP和XML的紧密结合过程。两种技术以Web为中心的天性促使它们联合起来成为动态内容所需的理想解决方案。
欢迎评论或投稿