xml与php使用,XML应用-用PHP与XML联手进行网站编程

2. xml_parser_create

本函数用来初始化一个新的 XML 解析器。参数 encoding 可省略,为 XML 使用的字符集,默认值为 ISO-8859-1,其它尚有 US-ASCII、UTF-8 二种。成功则返回 parser 代码供其它函数使用,失败则返回 false 值。

3. xml_set_element_handler

本函数配置元素的标头供 xml_parse() 函数使用。参数 parser 为解析代码。参数 startElementHandler 及 endElementHandler 分别为元素开始与结束的标头,其中的 startElementHandler 必须包括解析代码、名称、与属性,而 endElementHandler 参数包括了解析代码及名称二个参数。若无错误则返回 true 值。

4. xml_set_character_data_handler

本函数配置字符资料的标头。参数 parser 为解析代码。参数 handler 包括解析代码及资料字符串等二个元素。若无错误则返回 true 值。

5. xml_get_error_code

本函数可取得 XML 在处理时的错误代码。参数 parser 为解析代码。若 parser 有错则返回 false 值,否则就返回错误代码 (如 XML_ERROR_BINARY_ENTITY_REF .... 等等)。

6. xml_error_string

本函数可取得 XML 在处理时的错误代码。参数 code 为解析错误代码。若无错误返回值为代码的文字描述字符串。

7. xml_get_current_line_number

本函数用来取得目前 XML 解析所正在处理的行号。参数 parser 为解析代码。若 parser 有错则返回 false 值,若无错误则返回行号数字。

8. xml_parser_free

本函数用来释放目前 XML 解析所使用的内存。参数 parser 为解析代码。若没有错误则返回 true 值,否则返回 false 值。

五、案例解析

以下是用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的结束标记时 *

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

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

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

function stop_element($parser,$name)

{

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

global $depth;

$depth[$parser]--;

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

if($depth[$parser]==2)

{

echo "<hr color=red size=1>";

}

}

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

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

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

*显示出标记的内容 *

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

function char_data($parser,$data)

{

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

global $depth;

//显示标记的内容

$data=trim($data);

if (strlen($data))

{

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

echo "&nbsp";

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

}

}

//

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

//

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

$file="address.xml";

//读取文件

$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,1))

{

//报错

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

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值