用PHP与XML联手进行网站编程
五、案例解析
以下是用PHP5实现读取一个以XML 1.0格式编写的通讯录address.xml,并显示其内容的示例。详解见有关注释。
<?
//
//第一部分:几个PHP Helper函数
//
/*********************************
*从一个文件中读取XML的 *
*内容到字符串中 *
*********************************/
function read_file($filename)
{
//读取文件
$lines=file($filename);
//变量$contents是存放文件内容的变量
$contents="";
while(list($key,$value)=each($lines))
{
$contents.=$value;
}
return $contents;
}
/*********************************
*当PHP遇到一个XML的起始标记时 *
*调用,其作用是按照一定的层次 *
*显示出XML的标记 *
*********************************/
function start_element($parser, $name, $attrs)
{
//变量$depth存放标记的深度
global $depth;
//变量$spacer存放标记前所有的箭头符号
$spacer="";
for ($i=1;$i<$depth[$parser];$i++)
{
$spacer.="->";
}
//设置标记显示时的颜色
if($depth[$parser]==0)
{
$font_color="red";
}
else
if($depth[$parser]==1)
{
$font_color="green";
}
else
{
$font_color="blue";
}
//设置标记显示时的字体
$font_size=5-$depth[$parser];
if ($font_size<2)
{
$font_size=2;
}
//显示标记
echo "<font size=".$font_size." color=".$font_color.">";
echo $spacer.$depth[$parser];
if ($depth[$parser]<>0)
{
echo "、";
}
echo $name."<BR>";
echo "</font>";
$depth[$parser]++;
//如果是主标记就显示红色的水平线
if($depth[$parser]==2)
{
echo "<hr color=red size=1>";
}
}
/*********************************
*当PHP遇到一个XML的结束标记时 *