php

位置:IT落伍者 >> php >> 浏览文章

用PHP与XML联手进行网站编程[2]


发布日期:2019年01月14日
 
用PHP与XML联手进行网站编程[2]

案例解析

以下是用PHP实现读取一个以XML 格式编写的通讯录addressxml并显示其内容的示例详解见有关注释

<?

//

//第一部分几个PHPHelper函数

//

/**********************************

*从一个文件中读取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=;$i<$depth[$parser];$i++)

{

$spacer=;

}

//设置标记显示时的颜色

if($depth[$parser]==)

{

$font_color=red;

}

else

if($depth[$parser]==)

{

$font_color=green;

}

else

{

$font_color=blue;

}

//设置标记显示时的字体

$font_size=$depth[$parser];

if ($font_size<)

{

$font_size=;

}

//显示标记

echo <font size=$font_size color=$font_color;

echo $spacer$depth[$parser];

if ($depth[$parser]<>)

{

echo ;

}

echo $name<BR>;

echo </font>;

$depth[$parser]++;

//如果是主标记就显示红色的水平线

if($depth[$parser]==)

{

echo <hr color=red size=;

}

}

/*********************************

*当PHP遇到一个XML的结束标记时 *

*调用其作用是改变当前的层次 *

*计数并在主标记下显示水平线 *

*********************************/

function stop_element($parser$name)

{

//变量$depth存放标记的深度

global $depth;

$depth[$parser];

//如果是主标记就显示红色的水平线

if($depth[$parser]==)

{

echo <hr color=red size=;

}

}

/*********************************

*当PHP遇到一个XML的标记内容时 *

*调用其作用是按照一定的层次 *

*显示出标记的内容 *

*********************************/

function char_data($parser$data)

{

//变量$depth存放标记的深度

global $depth;

//显示标记的内容

$data=trim($data);

if (strlen($data))

{

for ($i=;$i<$depth[$parser]+;$i++)

echo  

echo <b>$data</b><br>\n;

}

}

//

//第二部分PHP文件开始执行处

//

//要解析的XML文件的名字

$file=addressxml;

//读取文件

$data=read_file($file);

// 产生解析器的实例

$parser = xml_parser_create();

// 设置处理函数

xml_set_element_handler($parser start_element stop_element);

xml_set_character_data_handler($parser char_data);

// 解析文件

if(!xml_parse($parser$data))

{

//报错

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);

?>

[] []

               

上一篇:PHP网络编程:创建登录表单

下一篇:用PHP与XML联手进行网站编程[1]