分享
 
 
 

Php操作xml文件 - 读取、显示

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

参考: PHP爱好者

本例中的xml文件位于http://www.slashdot.org/slashdot.xml

本例中的php文件读取、显示xml文件内容

以下为php文件的内容,把该php文件和slashdot.xml放在同一个文件夹即可

<?php

$open_tags = array(

'STORY' => '<STORY>',

'TITLE' => '<TITLE>',

'URL' => '<URL>',

'AUTHOR'=> '<AUTHOR>'

);

$close_tags = array(

'STORY' => '</STORY>',

'TITLE' => '</TITLE>',

'URL' => '</URL>',

'AUTHOR'=> '</AUTHOR>'

);

?>

<?php

//下面就是定义函数来提取数据:

// 处理开始标记的属性指

// $attrs是一个多维数组,键值为属性名, 值就是该属性的值

function startElement($parser, $name, $attrs=''){

global $open_tags, $temp, $current_tag;

$current_tag = $name;

if ($format = $open_tags[$name]){

switch($name){

case 'STORY':

echo '新的故事: ';

break;

default:

break;

}

}

}

// $current_tag告诉我们正在处理的标记,我们随后会在characterData函数中使用

//

// 当遇到</STORY>标记时我们知道要flush所有的临时变量准备操作下一个标记

function endElement($parser, $name, $attrs=''){

global $close_tags, $temp, $current_tag;

if ($format = $close_tags[$name]){

switch($name){

case 'STORY':

return_page($temp);

$temp = '';

break;

default:

break;

}

}

}

// 传送给此函数的是元素间的数据

// 例如,对<TITLE>Title Here</TITLE>,$data就等于'Title Here'

function characterData($parser, $data){

global $current_tag, $temp, $catID;

switch($current_tag){

case 'TITLE':

$temp['title'] = $data;

$current_tag = '';

break;

case 'URL':

$temp['url'] = $data;

$current_tag = '';

break;

case 'AUTHOR':

$temp['author'] = $data;

$current_tag = '';

default:

break;

}

}

?>

<?php

function return_page(){

global $temp;

echo 'o <A HREF="'.$temp['url'].'">'.$temp['title'].'</A><BR>';

echo 'Author:'.$temp['author'].'<BR>';

echo '-----------------------------';

echo '<br>';

}

// 分析的内容

$xml_file = 'slashdot.xml';

// 定义字符集,默认是UTF-8

$type = 'UTF-8';

// 建立解析器

$xml_parser = xml_parser_create($type);

// 设置解析选项

xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);

xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');

// 告诉PHP发现元素时要调用什么函数

// 这些函数同时也处理元素的属性

xml_set_element_handler($xml_parser, 'startElement','endElement');

//告诉PHP对字符数据调用什么函数

xml_set_character_data_handler($xml_parser, 'characterData');

if (!($fp = fopen($xml_file, 'r'))) {

die("无法打开 $xml_file 文件进行解析!n");

}

// 通过循环来解析整个文件

while ($data = fread($fp, 4096)) {

if (!($data = utf8_encode($data))) {

echo 'ERROR'."n";

}

if (!xml_parse($xml_parser, $data, feof($fp))) {

die(sprintf( "XML error: %s at line %dnn",

xml_error_string(xml_get_error_code($xml_parser)),

xml_get_current_line_number($xml_parser)));

}

}

xml_parser_free($xml_parser);

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有