网站制作学习网PHP→正文:php读取xml
字体:

php读取xml

PHP 2010/9/26 17:58:59  点击:不统计

http://www.forasp.cn/

php可以读取xml可以用来做读取webservices,网上找了一下,学习了一下php读取xml,有很多中方法,首先介绍用parser函数读取xml,在网上有很多读取"姓名,职位"的例子,不知道你们读出来没有,我反正没有弄出来,不过我最后找到了原因是编码问题.在utf-8和gb2312中转换一下编码.
我也是借鉴了那个主程序代码做了部分修改.并读取了站的最新文章的xml.
借鉴代码网址:
修改代码以及详细解释如下:
<?
header("content-Type: text/html; charset=gb2312");#首先确定输出的是gb2312编码
$parser = xml_parser_create(); //创建一个parser编辑器
xml_set_element_handler($parser, "startElement", "endElement");//设立标签触发时的相应函数 这里分别为startElement和endElenment
xml_set_character_data_handler($parser, "characterData");//设立数据读取时的相应函数
$xml_file="http://www.forasp.cn/rss.asp";//指定所要读取的xml文件,可以是url
$filehandler = fopen($xml_file, "r");//打开文件
if($filehandler)die("读取xml失败");
while ($data = fread($filehandler, 4096))
{ xml_parse($parser,$data,feof($filehandler));}//每次取出4096个字节进行处理
fclose($filehandler);#关闭打开文件资源
xml_parser_free($parser);//关闭和释放parser解析器

function startElement($parser_instance, $element_name, $attrs)//起始标签事件的函数即每次处理的节点都要从这里开始.$parser_instance是资源序号,一般不用,你可以输出来看看, $element_name是节点的名称,$attrs是数组,但都是空的,不知道为什么,也不知道有什么用
{#下面节点名称的输出是根据http://www.forasp.cn/rss.asp网站制作学习网最新更新内容的xml解析.
switch ($element_name){
case "TITLE":
 echo "文章标题(名称):";
 break;
case "DESCRIPTION":
 echo "描述:";
 break;
case "AUTHOR":
 echo "作者:";
 break;
case "LINK":
 echo "连接:";
 break;
case "PUBDATE"://
 echo "发布时间:";
 break;
case "GENERATOR":
 echo "创建者";
 break;
case "WEBMASTER":
 echo "管理员:";
 break;
case "IMAGE":
 echo "图片:";
 break;
case "EMAIL":
 echo "邮件:";
 break;
 }
}
function characterData($parser_instance, $xml_data){//读取数据时的函数,输出该xml内容,参数一是资源id,参数2是要输出节点的内容
echo mb_convert_encoding($xml_data,"GB2312","UTF-8");//这里特别注意一下:需要更换编码的则要注意.
}
function endElement($parser_instance, $element_name){//结束标签事件的函数,每个节点输出结束,添加一个换行以便前台显示的比较好看.
echo "<br>";
}
?>
可以保存文foraspcn.php运行一下,看看读取xml后的结果.


网站http://www.制forasp作.cn

·上一篇:php日期转换 >>    ·下一篇:php读取xml2 >>
推荐文章
最新文章